首页 新闻 会员 周边 捐助

Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理

0
悬赏园豆:100 [已解决问题] 解决于 2017-08-08 10:24

条件: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、这个部分该如何调用

 

    

静行路者的主页 静行路者 | 初学一级 | 园豆:150
提问于:2017-08-02 10:01
< >
分享
最佳答案
0

听说过Gson(com.google.gson.Gson)吗?我现在项目都是用它把json直接转为对象的,拿到对象你再直接转map就简单了吧

收获园豆:100
让我发会呆 | 老鸟四级 |园豆:2929 | 2017-08-02 17:26

最新也在疯狂的对接第三方接口,你的这些需求我大致都有代码的,如果你需要,我copy给你。

让我发会呆 | 园豆:2929 (老鸟四级) | 2017-08-02 17:37

@让我发会呆: 谢谢,你有相应的代码,麻烦你发一下了。

静行路者 | 园豆:150 (初学一级) | 2017-08-03 15:11

@静行路者: 你具体想看哪块呢?

让我发会呆 | 园豆:2929 (老鸟四级) | 2017-08-03 15:31

@让我发会呆: 谢谢,我在思考这个部分,思路有些问题。暂时不需要了。

静行路者 | 园豆:150 (初学一级) | 2017-08-03 15:33
其他回答(4)
0

百度:java  restfulclient 

或者:java发起一个http请求.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-02 10:04

 谢谢你的回答,但是第二个问题:返回参数就是上面的那种格式,在Java中应该怎么转换为Map保存,而且如果boby的格式为:boby[{key1:value1,key2:value2},{key1,value3,key2:value4}]是我又该怎么保存在map中?

还有第三个问题:如何我使用HttpGet类来处理,该怎么设置http header请求头参数?

谢谢

支持(0) 反对(0) 静行路者 | 园豆:150 (初学一级) | 2017-08-02 10:17

@静行路者: 他的返回值是json格式.你直接找个json序列化库.反序列化成对象就能用了.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-02 10:43
0

发送http请求, 你可以看下 httpClient  这个是一个开源的http操作工具;

解析返回json结果,你可以看下 fastJson,或者jackson,这两个json解析框架,  JsonObject的操作和Map是类似的,都是继承自map接口

苍枫露雨 | 园豆:1027 (小虾三级) | 2017-08-02 10:10

 谢谢,我这里暂时不能使用这个工具了。工具的话,我可以使用postman来测试的。只是还没有具体的测试IP及port,所以只能先把代码写好了。

支持(0) 反对(0) 静行路者 | 园豆:150 (初学一级) | 2017-08-02 10:19

@静行路者: 

是我用词不准确,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也是类似的

 

支持(0) 反对(0) 苍枫露雨 | 园豆:1027 (小虾三级) | 2017-08-02 10:28
0

你这个都是restful里面的东西,不想自己写这些底层的东西,那就给你推荐jersey中间件,他把这些都给你实现了。不过你得有半天的学习成本,哈哈哈哈

IT布道 | 园豆:204 (菜鸟二级) | 2017-08-04 13:55
0

请问下最后怎样解决的,我现在是遇到跟楼主一样的问题了,可否把大致的代码复制粘贴一份在这里。

春风彼岸花开 | 园豆:202 (菜鸟二级) | 2018-11-07 15:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册