1. 程式人生 > >Java 服務端通訊之httpClient

Java 服務端通訊之httpClient

      httpClient是java服務端可以主動傳送http請求的很好用的一個輕量級工具。使用起來應該說是非常方便的。

      首先在pom.xml檔案中引入依賴:

      <!-- HTTP訪問工具httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.4.1</version>
        </dependency>

       程式碼更是簡潔:

	HttpResponse response = null;
	HttpClient httpclient = HttpClients.createDefault();// 建立http連線的客戶端
	HttpPost post = new HttpPost("http://192.168.x.xxx:8080/login/enter.do");// 建立一個post請求
	try {
		RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//設定請求和傳輸超時時間 
		post.setConfig(requestConfig);
		//寫入引數,有兩種方法,一種是將引數逐個放入list中,另一種是拼接在一起(根據自己的需求任選一種)。
		//第一種
		List<NameValuePair> list = new ArrayList<>();//定義名值對列表
		JSONObject obj = new JSONObject();
		//把引數放到list中  
		list.add(new BasicNameValuePair("userName", "zhangsan"));
               list.add(new BasicNameValuePair("passWord", "666"));
		//把引數編碼到表單實體中
		HttpEntity postentity = new UrlEncodedFormEntity(list,"utf-8");
			
		//第二種,拼接引數
		/*String baseString = "userName=zhangsan&passWord=666";
		StringEntity stringEntity = new StringEntity(baseString,"utf-8"); 
		post.setEntity(stringEntity);//將請求實體放到post請求中*/
			
		post.setEntity(postentity);//將請求實體放到post請求中
		post.completed();
		response = httpclient.execute(post);// 用客戶端去執行post請求,返回響應
		HttpEntity entity = response.getEntity();// 從響應中拿到響應實體
		//收到的響應
		String responseText = EntityUtils.toString(entity);
	} catch (Exception e){
		e.printStackTrace();
	}finally{
		//釋放連線
		post.releaseConnection();
	}