zoukankan      html  css  js  c++  java
  • 使用FeignClient调用微信接口并返回openid简例

    在Java开发过程中可以使用各种http工具类调用微信接口,由于springCloud已经成为主流,其自带FeignClient类已经很优雅地实现了各种http调用方式,因此在springCloud中可以优先使用这个类调用微信接口。

    所需材料:

    1.实体定义:

    @Entity
    public class WeixinJsonObject {
        @Id
        private String openid;
        private String session_key;
        private String unionid;
        private String errcode;
        private String errmsg;
    
        public String getOpenid() {
            return openid;
        }
    
        public void setOpenid(String openid) {
            this.openid = openid;
        }
    
        public String getSession_key() {
            return session_key;
        }
    
        public void setSession_key(String session_key) {
            this.session_key = session_key;
        }
    
        public String getUnionid() {
            return unionid;
        }
    
        public void setUnionid(String unionid) {
            this.unionid = unionid;
        }
    
        public String getErrcode() {
            return errcode;
        }
    
        public void setErrcode(String errcode) {
            this.errcode = errcode;
        }
    
        public String getErrmsg() {
            return errmsg;
        }
    
        public void setErrmsg(String errmsg) {
            this.errmsg = errmsg;
        }
    }

    2.FeignClient类代码:

    @FeignClient(name = "${service.request.name}", configuration = FoodMobileServiceHystrix.class,url = "https://api.weixin.qq.com/")
    public interface FoodMobileService {
        @RequestMapping(value = "/sns/jscode2session", method = RequestMethod.GET)
        String getWeixinLogin(@RequestParam(name = "appid", required = true) String appid,
                                        @RequestParam(name = "secret", required = true) String secret,
                                        @RequestParam(name = "js_code", required = true) String js_code,
                                        @RequestParam(name = "grant_type", required = true) String grant_type);
    }
    FoodMobileServiceHystrix类代码:
    public class FoodMobileServiceHystrix  implements FoodMobileService {
        @Override
        public String getWeixinLogin(String appid, String secret, String js_code, String grant_type) {
            return null;
        }
    }

    3.接口调用代码:

    @ApiOperation(value = "获取微信ID", notes = "获取微信ID")
        @RequestMapping(value = "/getWeixinLogin", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
        public ResponseResult<Object> getWeixinLogin(@Param("js_code") String js_code) {
            try {
                String appid = "***********";
                String secret = "*******************";
                String grant_type = "authorization_code";
                String result = foodMobileService.getWeixinLogin(appid, secret, js_code, grant_type);
    
                JSONObject jsonString = JSONObject.parseObject(result);
                WeixinJsonObject weixinJsonObject = (WeixinJsonObject) JSONObject.toJavaObject(jsonString, WeixinJsonObject.class);
                return RestResultGenerator.genResult(weixinJsonObject, ConstantCode.RETURN_MESSAGE_SUCCESS, true, "200");
    
            } catch (Exception ex) {
                logger.error("方法名:getWeixinLogin错误:" + ex.getMessage());
                ex.printStackTrace();
                return RestResultGenerator.genResult(null, ex.getMessage(), false, "500");
            }
        }

    运行结果如下:

  • 相关阅读:
    Java类、实例初始化的顺序
    Java中堆栈的区别
    int与Integer的区别(基本类型与复杂类型的对比)转
    JS中函数执行顺序的问题?
    springMVC --@RequestParam注解(后台控制器获取参数)
    如何安装request库
    流程图
    认识broken pipe
    postman动态使用url
    自定义一个List排序规则,然后对另一个List按照该规则排序
  • 原文地址:https://www.cnblogs.com/jizhong/p/13637694.html
Copyright © 2011-2022 走看看