在Android上发送http请求有2种方式,分别由两个类完成,HttpURLConnection和HttpClient.
一、使用HttpURLConnection方式
1.1 建立连接的基本步骤
1 创建一个URL对象,例如:
URL url = new URL("http://www.baidu.com");
2 获取HttpURLConnection对象
HttpURLConnection connection = (HttpURLConnecton)URL.openConnection();
3 设置HTTP请求方式,常用的方式有“GET”和“POST”两种。
connection.setRequestMethod("GET");
4 设置一些其他参数,例如连接超时,读取超时的时间,例:
connection.setConnectionTimeout(8000);
connection.setReadTimeOut(6000);
5 调用getInputStream()方法获取到服务器返回的一个输入流,然后读取数据。
二、使用HttpClient
HttpClient是Apache提供的HTTP访问接口,其是一个接口,通常无法直接创建它的示例,HttpClient的基本使用步骤如下:
1、通常创建一个DefaultHttpClient的实例,如下:
HttpClient httpClient = new DefualtHttpClient();
2、如果是发起一条GET请求,则创建一个HttpGet对象,并传入目标网络地址,然后调用HttpClient的execute()方法,如下:
HttpGet httpGet = new HttpGet("http://www.baidu.com");
httpClient.execute(httpGet);
如果是发起一条POST请求,需要创建HttpPost对象,传入目标地址,然后通过NameValuePair集合来存放待提交参数,并将这个参数集合传入到一个UrlEncodeFormEnty中,然后通过HttpPost的setEntity方法将构建好的UrlEncodeFormEntity传入,最后调用HttpClient的execute()方法,并传入HttpPost对象。如下:
HttpPost httpPost = new HttpPost("http://www.baidu.com");
List<NameValuePaire> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("username","admin"));
list.add(new BasicNameValuePair("password","123456"));
UrlEncodeFormEntity entity = new UrlEncodeFromEntity(list,"utf-8");
httpPost.setEntity(entity);
httpClient.execute(httpPost);