一、Android 上發送HTTP 請求的方式通常有兩種,HttpURLConnection 和 HttpClient;服務器
二、HttpURLConnection 的用法:網絡
1)獲取 HttpURLConnection 實例:經過調用 URL 對象的 openConnection() 方法獲取;app
2)設置 HTTP 請求所使用的方法,經常使用的有兩個方法: GET 和 POST;post
3)其餘設置,好比設置鏈接超時、讀取超時的毫秒數等;ui
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
4)調用 HttpURLConnection 的 getInputStream() 方法能夠獲取到服務器返回的輸入流,經過這個輸入流就能夠讀取到服務端數據;url
5)最後須要調用 disconnect() 方法來關閉鏈接。spa
6)示例代碼:code
private String sendRequestWithHttpURLConnection(){ String result = null; HttpURLConnection connection = null; try{ URL url = new URL("http://www.baidu.com"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); InputStream inputStream = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder sb = new StringBuilder(); String str; while((str = br.readLine()) != null){ sb.append(str); } result = sb.toString(); }catch (Exception e){ e.printStackTrace(); }finally{ if(connection != null){ connection.disconnect(); } } return result; }
三、HttpClient 的用法:orm
1)HttpClient 是一個接口,一般狀況下會建立一個 DefaultHttpClient 的實例:HttpClient httpClient = new DefaultHttpClient();對象
2)設置請求:
--GET 請求:建立一個 HttpGet 對象,並傳入目標的網絡地址,而後調用 HttpClient 的 execute() 方法便可;
--POST請求:建立一個 HttpPost 對象,並傳入目標的網絡地址;建立一個 NameValuePair 集合來存放待提交的參數,並將這個參數集合傳入到一個UrlEncodedFormEntity 中,而後調用 HttpPost 的 setEntity() 方法將構建好的 UrlEncodedFormEntity傳入:
List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username", "admin")); params.add(new BasicNameValuePair("password", "123456")); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8"); httpPost.setEntity(entity);
3)調用 HttpClient 的 execute() 方法發起請求;
4)執行 execute() 方法以後會返回一個 HttpResponse,對象服務器所返回的全部信息就會包含在這裏面,一般狀況先取出服務器返回的狀態碼,若是等於200 就說明請求和響應都成功了,此時能夠調用 getEntity() 方法獲取到一個HttpEntity 實例,而後再用 EntityUtils.toString() 這個靜態方法將 HttpEntity 轉換成字符串;
5)示例代碼:
private String sendRequestWithHttpClient(String name, String pwd){ String result = null; HttpClient httpClient = null; try { httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost("http://www.baidu.com"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("name", name)); params.add(new BasicNameValuePair("pwd", pwd)); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8"); post.setEntity(entity); HttpResponse response = httpClient.execute(post); if(response.getStatusLine().getStatusCode() == 200){ HttpEntity entity1 = response.getEntity(); result = EntityUtils.toString(entity1, "UTF-8"); } }catch (Exception e){ e.printStackTrace(); } return result; }