条件:1、请求URL:http://ip:port/yypt/*.jsonRequest
2、接口采用http post协议。Content-Type为application/json
调用流程:
第三方通过事先调用登陆接口,获取访问的accessToken值。后续调用服务时,将该值设置在http header:X-Access-Token上。用于平台鉴权。accessToken默认有效期为一个月,过期后,平台会返回403 access forbidden状态,第三方平台需要重新获取accessToken。
1、请问一下以上在Java中该如何调用,具体的实现方法?
登录验证(post):
请求示例
{
"uid" : "testuser",
"forAccessToken" : "true",
"pwd" : "cc03e747a6afbbcbf8be7",
"rid" : "thirdparty"
}
返回示例
成功
{
"code" : "200",
"body" : {
"id" : "179",
"userId" : "testuser",
"roleId" : "thirdparty",
"tenantId" : "eh",
"manageUnit" : "eh",
"lastLoginTime" : "2016-12-01 13:37:31",
"lastIPAddress" : "10.207.27.16",
"lastUserAgent" : "CHROME,IP,WINDOWS_10",
"roleName" : "第三方平台",
"tenantName" : "eHealthCloud",
"manageUnitName" : "eHealthCloud",
"userName" : "测试第三方用户",
"displayName" : "eHealthCloud-第三方平台"
},
"properties" : {
"accessToken" : "d5bc6df8-32f8-4ff2-8e90-21d147eea"
}
}
2、请问一下:成功后返回的参数为json格式,怎么放入一个map中,body、properties是JsonArray吗?
get:
请求头文件:
http header请求头参数:X-Access-Token、X-Service-Id、X-Service-Method;
如:服务id 示例: yypt.tp_orgService 方法名称示例:findTypeAndAreaCode
方法参数:parameter1,parameter2
3、这个部分该如何调用
听说过Gson(com.google.gson.Gson)吗?我现在项目都是用它把json直接转为对象的,拿到对象你再直接转map就简单了吧
最新也在疯狂的对接第三方接口,你的这些需求我大致都有代码的,如果你需要,我copy给你。
@让我发会呆: 谢谢,你有相应的代码,麻烦你发一下了。
@静行路者: 你具体想看哪块呢?
@让我发会呆: 谢谢,我在思考这个部分,思路有些问题。暂时不需要了。
百度:java restfulclient
或者:java发起一个http请求.
谢谢你的回答,但是第二个问题:返回参数就是上面的那种格式,在Java中应该怎么转换为Map保存,而且如果boby的格式为:boby[{key1:value1,key2:value2},{key1,value3,key2:value4}]是我又该怎么保存在map中?
还有第三个问题:如何我使用HttpGet类来处理,该怎么设置http header请求头参数?
谢谢
@静行路者: 他的返回值是json格式.你直接找个json序列化库.反序列化成对象就能用了.
发送http请求, 你可以看下 httpClient 这个是一个开源的http操作工具;
解析返回json结果,你可以看下 fastJson,或者jackson,这两个json解析框架, JsonObject的操作和Map是类似的,都是继承自map接口
谢谢,我这里暂时不能使用这个工具了。工具的话,我可以使用postman来测试的。只是还没有具体的测试IP及port,所以只能先把代码写好了。
@静行路者:
是我用词不准确,httpClient 是一个工具包, 是代码层的,不是postman这种工具, httpclient封装了常用的http请求方法,简化了http操作的代码,例如:
HttpPost httpPost = new HttpPost("http://targethost/login"); List <NameValuePair> nvps = new ArrayList <NameValuePair>(); nvps.add(new BasicNameValuePair("username", "vip")); nvps.add(new BasicNameValuePair("password", "secret")); httpPost.setEntity(new UrlEncodedFormEntity(nvps)); CloseableHttpResponse response2 = httpclient.execute(httpPost);
jackson和fastJson也是类似的
你这个都是restful里面的东西,不想自己写这些底层的东西,那就给你推荐jersey中间件,他把这些都给你实现了。不过你得有半天的学习成本,哈哈哈哈
请问下最后怎样解决的,我现在是遇到跟楼主一样的问题了,可否把大致的代码复制粘贴一份在这里。