Java调用极光IM API注册用户并上传头像
梗概:根据极光文档,java注册用户到极光IM分为两个步骤,第一步,调用文件上传接口,上传头像,获取返回的 media_id ,即资源文件id。第二步调动注册接口,带上头像数据即可。代码如下:
相关技术栈:RestTemplate,Lombok
一、编写上传文件方法
上传成功后返回资源id
//文件上传极光public String uploadHead(String username){//生成base64加密秘钥,appkey:secret在极光IM开发平台获取String keys = "Basic " + Base64.getEncoder().encodeToString("appkey:secret".getBytes());//接口路径String url = "https://api.im.jpush.cn/v1/resource?type=image";//头像文件路径File file = new File("D:\\test.png");FileSystemResource resource = new FileSystemResource(file);MultiValueMap<String,Object> param= new LinkedMultiValueMap<>();param.add("filename",resource);// 文件ParameterizedTypeReference<String> resultType = new ParameterizedTypeReference<String>(){};HttpHeaders httpHeaders = new HttpHeaders();MediaType mediaType = MediaType.parseMediaType("multipart/form-data;charset=UTF-8"); // 上传文件需要设置的类型httpHeaders.setContentType(mediaType);httpHeaders.add("Authorization",keys);HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(param, httpHeaders);// 提交post请求ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, request, resultType);int statusCode = exchange.getStatusCodeValue();if(200 != statusCode){log.error("文件上传失败,当前账户:{}",username);return "";}String body = exchange.getBody();JSONObject o = JSONObject.parseObject(body);log.info("状态码:{},返回结果:{}",statusCode,body);return o.getString("media_id");}
二、构造注册数据,调用注册API注册至极光
引用对象实体:
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class JiGuangInfo {private String username;private String password;private String nickname;private String avatar;}
//调用极光注册接口同时注册public boolean registerJiGuangUser(List<JiGuangInfo> jiGuangInfos){//生成base64加密秘钥,appkey:secret在极光IM开发平台获取(将改行代码抽取至类变量)String keys = "Basic " + Base64.getEncoder().encodeToString("appkey:secret".getBytes());String url = "https://api.im.jpush.cn/v1/users";//设置请求数据的格式HttpHeaders headers = new HttpHeaders();headers.add("Authorization",keys);//封装请求内容HttpEntity<List<JiGuangInfo>> objectHttpEntity = new HttpEntity<>(jiGuangInfos,headers);//发起请求ResponseEntity<String> responseEntity = restTemplate.postForEntity(url,objectHttpEntity,String.class);int statusCode = responseEntity.getStatusCodeValue();String body = responseEntity.getBody();//极光API返回201为正常if(201 != statusCode){log.error("注册失败,状态码:{},返回结果:{}",statusCode,body);return false;}log.info("注册成功,状态码:{},返回结果:{}",statusCode,body);return true;}
三、生成注册信息注册
@org.junit.Testpublic void test(){List<JiGuangInfo> list = new ArrayList<>();JiGuangInfo jiGuangInfo = new JiGuangInfo("dingwh", "123456", "这个橘子超甜", uploadHead("dingwh"));list.add(jiGuangInfo);boolean b = registerJiGuangUser(list);log.info("注册结果:{}",b ? "success" : "fail");}
支持批量注册
Java调用极光IM API注册用户并上传头像相关推荐
- 使用java调用fastDFS客户端进行静态资源文件上传
一.背景 上篇博客我介绍了FastDFS的概念.原理以及安装步骤,这篇文章我们来聊一聊如何在java中使用FastDFSClient进行静态资源的上传. 二.使用步骤 1.开发环境 spring+sp ...
- 用户上传头像以及BUG修改
持久层 1.sql语句的规划 上传文件的操作其实是:先将用户上传的文件保存到服务器端的某个位置,然后将保存文件的路径记录在数据库中.当后续需要使用该文件时,从数据库中读出文件的路径,即可实现在线访问该 ...
- ajax实现上传头像功能,网络编程Ajax实现注册并选择头像后上传功能
在初次接触ajax后,我们做了一个crm训练的项目,大多数小组都有注册用户这一项,但是都忽略掉了一个功能,那就是,很多网站的注册是可以上传头像的,在这里我做了一个在已有的头像数组里选择图片上传作头像的 ...
- Java 调用Google Map Api解析地址,解析经纬度实例
Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使 ...
- java调用第三方天气预报API接口
java调用第三方天气预报API接口 package com.sensordata.controller; import com.common.json.JSONObject; import java ...
- java调用个人微信api接口实现收发消息发朋友圈
个人微信api接口,java调用个人微信api接口实现收发消息发朋友圈 1.微信好友收发消息 /** * 给微信好友发消息 * @author wechatno:t ...
- Java调用高德地图API根据详细地址获取经纬度
Java调用高德地图API根据详细地址获取经纬度 官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo * Web服务API 地理/ ...
- java调用个人微信API接口收发朋友圈,删除评论朋友圈
java调用个人微信API接口收发朋友圈,删除评论朋友圈 /** * 发送朋友圈任务 * @author wechatno:tangjinjinwx * @param ctx * @param vo ...
- java 用户上传头像
package Shangchuantouxiang;import java.io.*;import java.util.Scanner;//思路: /* * 1.定义一个方法,用来获取要上传的用户头 ...
最新文章
- Demo4 Slides.js的使用
- 扔掉,MySQL!性能被 MariaDB 吊打…
- Datepicker
- C++笔记-DLL的编写与调用
- 天涯明月刀开发_《天涯明月刀手游》正式上线 4700万玩家期待的那个江湖来了...
- linux gnome_GNOME,生日快乐:喜欢这个Linux桌面的8个理由
- LeetCode刷题开源手册
- format 用法及对齐
- php实现并排,css实现多列并排 多块并排 左右顶头_html/css_WEB-ITnose
- Windows 10 Install SQL Server 2005
- STM32F10X 工程复制 STM32F10x_StdPeriph_Lib_V3.5.0 文件到工程文件夹
- 单片机——仿真软件Proteus基本使用教程
- 《给QTreeView表项添加CheckBox和图标》:系列教程之七
- xposed框架定位修改怎么用_硬核!教你三种方法,实现微信自定义修改地区!
- 征途私服门:一个程序员和一个黑客群的故事
- 大泥王怎么调时区_卡西欧大泥王功能教学及怎么调时间
- python计算手机销量年增长率_「净资产增长率」Python量化数据获取:总资产同比增长率与净资产同比增长率 - seo实验室...
- 使用Mysql函数生成指定的自增序列号
- Viola-Jones检测器(VJ)---学习笔记
- Android国外学习资源汇总
热门文章
- MIL开发实践(2)——MIL实时采图
- 山东大学计算机专业知名教授,我院张华忠教授获山东大学“我最喜爱的老师”称号...
- mschart走势图 vc_VC++操作MSChart表格控件,效果不错。
- MyBatis 教程
- 豆芽八股专栏之嵌入式
- 使用Velocity.js令人难以置信的快速UI动画
- 计算机提示网络不可用,网络连接不可用怎么办 电脑网络连接不可用解决办法...
- android使用sax解析xml
- CentOS7.8忘记密码后如何重置
- [PYTHON]7-3 程序员买苹果