1. 程式人生 > >Httpclient4.5.2 POST Json 資料到另外一個網站, 解析

Httpclient4.5.2 POST Json 資料到另外一個網站, 解析

需要使用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