一、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; }