1、背景java
公司有一個需求,就是以前的那個webservice實現的那個模塊用http請求的方式實現.jar包下載地址http://files.cnblogs.com/files/antonyhubei/httpclient_jar.zipweb
2、介紹Http請求api
HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(World Wide Web Consortium)和Internet工做小組IETF(Internet Engineering Task Force)合做的結果,(他們)最終發佈了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定義了今天廣泛使用的一個版本——HTTP 1.1。數組
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。瀏覽器
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。服務器
3、如何執行一個Http請求網絡
一、建立一個客戶端,同時配置響應的參數ide
//建立一個客戶端 HttpClient client = new HttpClient(); //主機的配置信息 HostConfiguration hostConfig = new HostConfiguration(); //ip 地址,port端口 hostConfig.setHost(ip, port); //客戶端主機的配置 client.setHostConfiguration(hostConfig); //其餘的客戶端參數 HttpClientParams params = new HttpClientParams(); //編碼 params.setContentCharset("utf-8"); //是不是長鏈接 params.setParameter("Connection", "keep-alive"); //設置請求鏈接超時時間爲5秒 params.setConnectionManagerTimeout(5*1000); //測試 params.setSoTimeout(5000); client.setParams(params); PostMethod method = new PostMethod(); method.setRequestHeader("Connection", "Keep-Alive");
二、準備要發送的參數,多是一個數組測試
//設置請求的url URI uri = new URI("/epgs/api/setSyncCode",true,"utf-8"); method.setURI(uri); //設置請求的參數(數組) NameValuePair[] params = new NameValuePair[] { new NameValuePair("syncCode", syncCode) }; method.setRequestBody(params); //設置請求頭(防止有時候參數的位數會有問題) method.setRequestHeader("Content-Length", String.valueOf(method.getRequestEntity().getContentLength()));
三、發送Http請求編碼
client.executeMethod(method);
四、獲取響應的狀態碼和響應的數據進行分析並執行下一步的操做
//請求返回200 if (method.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //獲取服務器響應的數據 String result = method.getResponseBodyAsString(); if (result.equals("true")) { ret = true; } else { ret = false; } }