Android使用HttpClient完成Post和Get方式的連網請求

來源:互聯網
上載者:User

      Android連網可以採用HttpPost,HttpGet封裝post請求和get請求,再使用HttpClient的excute方法發送post或者get請求並返回伺服器的響應資料。

      1、設定串連和讀取逾時時間,並建立HttpClient對象:

      // 設定連線逾時時間和資料讀取逾時時間<br /> HttpParams httpParams = new BasicHttpParams();<br /> HttpConnectionParams.setConnectionTimeout(httpParams,<br /> 30000);<br /> HttpConnectionParams.setSoTimeout(httpParams,<br /> 30000);<br /> //建立HttpClient對象<br /> HttpClient httpClient = new DefaultHttpClient(httpParams);

     2、Get請求:

     HttpPost post = new HttpPost(KeySource.HOST_URL_STR);<br /> // set HTTP head parameters<br /> Map<String, String> headers = heads;<br /> Set<String> setHead = headers.keySet();<br /> Iterator<String> iteratorHead = setHead.iterator();<br /> while (iteratorHead.hasNext())<br /> {<br /> String headName = iteratorHead.next();<br /> String headValue = (String) headers.get(headName);<br /> post.setHeader(headName, headValue);<br /> }<br /> /**<br /> * 通常的HTTP實體需要在執行內容的時候動態產生的。<br /> * HttpClient的提供使用EntityTemplate實體類和 ContentProducer介面支援動態實體。<br /> * 內容製作是通過寫需求的內容到一個輸出資料流,每次請求的時候都會產生。<br /> * 因此,通過EntityTemplate 建立實體通常是獨立的,重複性好。<br /> */<br /> ontentProducer cp = new ContentProducer()<br /> {<br /> public void writeTo(OutputStream outstream)<br /> throws IOException<br /> {<br /> Writer writer = new OutputStreamWriter(outstream,<br /> "UTF-8");<br /> writer.write(requestBody);<br /> writer.flush();<br /> writer.close();<br /> }<br /> };<br /> HttpEntity entity = new EntityTemplate(cp);<br /> post.setEntity(entity);<br /> }<br /> //執行connect ,需要try ,catch處理<br /> response = httpClient.execute(post);

     3、Post請求:

     HttpPost post = new HttpPost(KeySource.HOST_URL_STR);<br /> // set HTTP head parameters<br /> Map<String, String> headers = heads;<br /> Set<String> setHead = headers.keySet();<br /> Iterator<String> iteratorHead = setHead.iterator();<br /> while (iteratorHead.hasNext())<br /> {<br /> String headName = iteratorHead.next();<br /> String headValue = (String) headers.get(headName);<br /> post.setHeader(headName, headValue);<br /> }<br /> /**<br /> * 通常的HTTP實體需要在執行內容的時候動態產生的。<br /> * HttpClient的提供使用EntityTemplate實體類和ContentProducer介面支援動態實體。<br /> * 內容製作是通過寫需求的內容到一個輸出資料流,每次請求的時候都會產生。<br /> * 因此,通過EntityTemplate建立實體通常是獨立的,重複性好。<br /> */<br /> ContentProducer cp = new ContentProducer()<br /> {<br /> public void writeTo(OutputStream outstream)<br /> throws IOException<br /> {<br /> Writer writer = new OutputStreamWriter(outstream,<br /> "UTF-8");<br /> writer.write(requestBody);<br /> writer.flush();<br /> writer.close();<br /> }<br /> };<br /> HttpEntity entity = new EntityTemplate(cp);<br /> post.setEntity(entity);<br /> }<br /> //connect ,need try catch<br /> response = httpClient.execute(post); 

     4、請求Response響應處理:

     if (response.getStatusLine().getStatusCode() == 200)<br /> {<br /> // get response xml.<br /> /**<br /> * 因為直接調用toString可能會導致某些中文字元出現亂碼的情況。所以此處使用toByteArray<br /> * 如果需要轉成String對象,可以先調用EntityUtils.toByteArray()方法將訊息實體轉成byte數組,<br /> * 在由new String(byte[] bArray)轉換成字串。<br /> */<br /> byte[] bResultXml = EntityUtils.toByteArray(response<br /> .getEntity());<br /> if (bResultXml != null)<br /> {<br /> String strXml = new String(bResultXml, "utf-8");<br /> }<br /> }<br /> //Todo xmlAnalysis..

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.