梗概:根据极光文档,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注册用户并上传头像相关推荐

  1. 使用java调用fastDFS客户端进行静态资源文件上传

    一.背景 上篇博客我介绍了FastDFS的概念.原理以及安装步骤,这篇文章我们来聊一聊如何在java中使用FastDFSClient进行静态资源的上传. 二.使用步骤 1.开发环境 spring+sp ...

  2. 用户上传头像以及BUG修改

    持久层 1.sql语句的规划 上传文件的操作其实是:先将用户上传的文件保存到服务器端的某个位置,然后将保存文件的路径记录在数据库中.当后续需要使用该文件时,从数据库中读出文件的路径,即可实现在线访问该 ...

  3. ajax实现上传头像功能,网络编程Ajax实现注册并选择头像后上传功能

    在初次接触ajax后,我们做了一个crm训练的项目,大多数小组都有注册用户这一项,但是都忽略掉了一个功能,那就是,很多网站的注册是可以上传头像的,在这里我做了一个在已有的头像数组里选择图片上传作头像的 ...

  4. Java 调用Google Map Api解析地址,解析经纬度实例

    Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使 ...

  5. java调用第三方天气预报API接口

    java调用第三方天气预报API接口 package com.sensordata.controller; import com.common.json.JSONObject; import java ...

  6. java调用个人微信api接口实现收发消息发朋友圈

    个人微信api接口,java调用个人微信api接口实现收发消息发朋友圈 1.微信好友收发消息         /**      * 给微信好友发消息      * @author wechatno:t ...

  7. Java调用高德地图API根据详细地址获取经纬度

    Java调用高德地图API根据详细地址获取经纬度 官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo * Web服务API 地理/ ...

  8. java调用个人微信API接口收发朋友圈,删除评论朋友圈

    java调用个人微信API接口收发朋友圈,删除评论朋友圈 /** * 发送朋友圈任务 * @author wechatno:tangjinjinwx * @param ctx * @param vo ...

  9. java 用户上传头像

    package Shangchuantouxiang;import java.io.*;import java.util.Scanner;//思路: /* * 1.定义一个方法,用来获取要上传的用户头 ...

最新文章

  1. Demo4 Slides.js的使用
  2. 扔掉,MySQL!性能被 MariaDB 吊打…
  3. Datepicker
  4. C++笔记-DLL的编写与调用
  5. 天涯明月刀开发_《天涯明月刀手游》正式上线 4700万玩家期待的那个江湖来了...
  6. linux gnome_GNOME,生日快乐:喜欢这个Linux桌面的8个理由
  7. LeetCode刷题开源手册
  8. format 用法及对齐
  9. php实现并排,css实现多列并排 多块并排 左右顶头_html/css_WEB-ITnose
  10. Windows 10 Install SQL Server 2005
  11. STM32F10X 工程复制 STM32F10x_StdPeriph_Lib_V3.5.0 文件到工程文件夹
  12. 单片机——仿真软件Proteus基本使用教程
  13. 《给QTreeView表项添加CheckBox和图标》:系列教程之七
  14. xposed框架定位修改怎么用_硬核!教你三种方法,实现微信自定义修改地区!
  15. 征途私服门:一个程序员和一个黑客群的故事
  16. 大泥王怎么调时区_卡西欧大泥王功能教学及怎么调时间
  17. python计算手机销量年增长率_「净资产增长率」Python量化数据获取:总资产同比增长率与净资产同比增长率 - seo实验室...
  18. 使用Mysql函数生成指定的自增序列号
  19. Viola-Jones检测器(VJ)---学习笔记
  20. Android国外学习资源汇总

热门文章

  1. MIL开发实践(2)——MIL实时采图
  2. 山东大学计算机专业知名教授,我院张华忠教授获山东大学“我最喜爱的老师”称号...
  3. mschart走势图 vc_VC++操作MSChart表格控件,效果不错。
  4. MyBatis 教程
  5. 豆芽八股专栏之嵌入式
  6. 使用Velocity.js令人难以置信的快速UI动画
  7. 计算机提示网络不可用,网络连接不可用怎么办 电脑网络连接不可用解决办法...
  8. android使用sax解析xml
  9. CentOS7.8忘记密码后如何重置
  10. [PYTHON]7-3 程序员买苹果