Httpclient4.5.2 POST Json 資料到另外一個網站, 解析
阿新 • • 發佈:2019-01-10
需要使用HttpClient 4.5.2來做POST傳引數到某個網站,得到相應的功能。
最近花了些時間在API上,通過JSON來呼叫幾個功能。但是怎麼傳引數很頭疼。
JSON需要理解得透徹一些,我是通過以下這個免費的視訊,加深了對JSON的理解:
看了一些網上的介紹,最後是這樣的做的:先形成一個字串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);
與此部落格關聯的另外一個部落格,是寫如何檢視網站返回的加密資料的,如下:
同時,其他的一些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