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.Test
    public 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");
    }

支持批量注册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值