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..