您的位置:首页 > 理论基础 > 计算机网络

Httpclient4.5.2 POST Json 数据到另外一个网站, 解析

2016-09-26 21:26 656 查看
需要使用HttpClient 4.5.2来做POST传参数到某个网站,得到相应的功能。

最近花了些时间在API上,通过JSON来调用几个功能。但是怎么传参数很头疼。

JSON需要理解得透彻一些,我是通过以下这个免费的视频,加深了对JSON的理解:

http://study.163.com/course/courseMain.htm?courseId=1295002

看了一些网上的介绍,最后是这样的做的:先形成一个字符串json(只是名字叫json而已),这个字符串就是标准的JSON字符串。确保这个字符串是正确的,然后把它代入httpPost的Entity,再执行POST操作(CloseableHttpResponse response2 = httpclient.execute(httpPost);)

这个方式最简单最直接,最容易验证。代码片段如下:

String json ="{\"subject\""+":"+"\""+T_subject+"\""+","+"\"description\""+":"+"\""+T_description+"\""+","+"\"status\""+":"+"\"new\""+","+"\"requester\""+":"+"{\"id\""+":"+requesterID+"}"+","+"\"serviceDesk\""+":"+"{\"id\""+":"+serviceDeskID+"}"+","+"\"engineer\""+":"+"{\"id\""+":"+engineerID+"}"+"}";

System.out.println("json tring ================="+json);

StringEntity requestEntity = new StringEntity(json, "utf-8");

httpPost.setEntity(requestEntity);

HttpEntity entity_POST = httpPost.getEntity();
String entityString = EntityUtils.toString(entity_POST);
System.out.println("POSTentityString="+entityString);
// System.out.println("POSTentityStringby_nvps="+nvps.toString());

// returnValue = httpclient.execute(httpPost, responseHandler);

CloseableHttpResponse response2 = httpclient.execute(httpPost);

try {
// System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();

// System.out.println("VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVresponese2entityString="+EntityUtils.toString(entity2));

ContentType contentType2 = ContentType.getOrDefault(entity2);
Charset charset2 = contentType2.getCharset();
System.out.println("----------------------------------------------get_respone2_ContentType="+contentType2);
System.out.println("----------------------------------------------get_respone2_entityCharset="+charset2);

Reader reader2 = new InputStreamReader(entity2.getContent(), charset2);
System.out.println("==============================================get_respone2_entityReader="+reader2);
System.out.println("==============================================get_respone2_entityReader="+reader2.toString());

// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);

与此博客关联的另外一个博客,是写如何查看网站返回的加密数据的,如下:

http://blog.csdn.net/qxd100/article/details/52675362

同时,其他的一些Httpclient 解析 Json 数据的一些文章的收集如下,供参考:

这个比较实用:
http://blog.csdn.net/zhanghaonana/article/details/51792962
这个比较简洁:
http://blog.csdn.net/u014614038/article/details/49800709
这个也比较简洁:
http://zhcheng.iteye.com/blog/1292350
这个是讨论,包含了去官网的说明的链接:
http://bbs.csdn.net/topics/391887692
这个比较长的,比较详细:
http://itindex.net/detail/52566-httpclient



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: