本文共 3113 字,大约阅读时间需要 10 分钟。
本地采用post+http封装接口,提供对外使用:
post和get其实不影响,我们在开发接口时候就按照本地接口来开发即可
http中post和get的区别:
get一般只是查询数据,参数跟在请求地址后面,用问号隔开;参数最多为1024字节。
post一般是修改等,参数在请求体中;参数量更大。
在接口开发中,没有区别,都是获取参数,然后返回数据。
post和get就相当于是ajax的参数传递的区别。
参考:
接口开发:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | /** * 获取用户信息 * * @param appid * 第三方网站唯一标识 * * @param access_token * 联合中心的全局唯一票据 * * @param openid * 由联合中心颁发的当前用户的用户标识 * * @param start * 预备填充的用户信息, JSON数据 * * @param size * 预备填充的用户信息, JSON数据 * * @return JSON 数据 * */ @RequestMapping (value = "/{appid}/userInfo" , method = RequestMethod.GET, produces = { "application/json;charset=UTF-8" }) @ResponseBody public String getUserInfo(HttpServletRequest request, HttpServletResponse response, @PathVariable ( "appid" ) String appid, String access_token, String openid, Integer start, Integer size) throws Exception { String result = null ; try { result = userService.getUserInfo(appid, access_token, openid, start, size); } catch (Exception ex) { ex.printStackTrace(); } if (- 1 != result.indexOf( "errmsg" )) { result = AppErrorResult.setErrorResult(result); } return result; } |
1. 当前用户为第三方网站自身用户,可以使用原有方式进行查询
2. 当前用户为非第三方网站自身用户或第三方用户信息由联合中心托管的情况下。需要向联合中心发起请求获取用户其他信息
3. 具体数据需要跟第三方网站协商确定
HTTP请求方式:GET
?access_token=accessToken& openid=openId
参数名 | 是否必填 | 参数说明 |
appid | 是 | 第三方网站唯一标识 |
access_token | 是 | 联合中心的全局唯一票据 |
openid | 是 | 由联合中心颁发的当前用户的openid |
注:在联合中心鉴权时,会先做token检查,如果有误就返回错误码。比如token超时,则需要第三方网站重新获取token,获取token方式见获取access_token.
返回说明
正确, 返回如下JSON数据包
{ “openid” : “OPENID”,
“name” : “name”,
…
}
注:具体数据需要跟第三方网站协商确定
错误,返回错误码等信息,JSON数据包示例如下(该示例为appid无效错误)
{ “errorcode” : 40013, “errmsg” : ”invalid appid”}
错误码:
{"errorCode":40013,"errorMessage":"errmsg: invalid appid"}
{"errorCode":40014,"errorMessage":"errmsg: invalid access_token"}
{"errorCode":40017,"errorMessage":"errmsg: access_token timeout"}
{"errorCode":40018,"errorMessage":"errmsg: invalid access_token for appid"}
{"errorCode":40021,"errorMessage":"errmsg: invalid openid "}
{"errorCode":40022,"errorMessage":"errmsg: invalid account"}
Java调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @Override public UcaResult queryUser(String openId) throws Exception { //联合用户中心查询用户数据 String url = "" ; try { AddressMappingQuery addressMappingQuery= new AddressMappingQuery(); addressMappingQuery.setKmsid( "ucaUrl" ); List<AddressMapping> AddressMappings = this .addressMappingManager.query(addressMappingQuery); url = AddressMappings.get( 0 ).getAddressMappingUrl(); } catch (Exception e1) { e1.printStackTrace(); throw new Exception( "服务器错误,获取第三方接口url失败" ); } url = url + "/userInfo" ; HttpParameter httpParameter = new HttpParameter(); // 参数 httpParameter.add( "openid" , openId); httpParameter.add( "access_token" , (String)GlobalSet.AccessTokenMap.get( "access_token" )); String resultStr = PostUtil.doGet(url, httpParameter, "UTF-8" ); Gson gson= new GsonBuilder().setPrettyPrinting().create(); UcaResult result=gson.fromJson(resultStr, UcaResult. class ); return result; } |