在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过它的API我们可以很方便的发出GET,POST请求。
/**
* 通过GET方式发起http请求
*/
@Test
public
void
requestByGetMethod(){
//创建默认的httpClient实例
CloseableHttpClient httpClient = getHttpClient();
try
{
//用get方法发送http请求
HttpGet get =
new
HttpGet(
"http://www.baidu.com"
);
System.out.println(
"执行get请求:...."
+get.getURI());
CloseableHttpResponse httpResponse =
null
;
//发送get请求
httpResponse = httpClient.execute(get);
try
{
//response实体
HttpEntity entity = httpResponse.getEntity();
if
(
null
!= entity){
System.out.println(
"响应状态码:"
+ httpResponse.getStatusLine());
System.out.println(
"-------------------------------------------------"
);
System.out.println(
"响应内容:"
+ EntityUtils.toString(entity));
System.out.println(
"-------------------------------------------------"
);
}
}
finally
{
httpResponse.close();
}
}
catch
(Exception e) {
e.printStackTrace();
}
finally
{
try
{
closeHttpClient(httpClient);
}
catch
(IOException e){
e.printStackTrace();
}
}
}
/**
* POST方式发起http请求
*/
@Test
public
void
requestByPostMethod(){
CloseableHttpClient httpClient = getHttpClient();
try
{
HttpPost post =
new
HttpPost(
"http://localhost/...."
); //这里用上本机的某个工程做测试
//创建参数列表
List<NameValuePair> list =
new
ArrayList<NameValuePair>();
list.add(
new
BasicNameValuePair(
"j_username"
,
"admin"
));
list.add(
new
BasicNameValuePair(
"j_password"
,
"admin"
));
//url格式编码
UrlEncodedFormEntity uefEntity =
new
UrlEncodedFormEntity(list,
"UTF-8"
);
post.setEntity(uefEntity);
System.out.println(
"POST 请求...."
+ post.getURI());
//执行请求
CloseableHttpResponse httpResponse = httpClient.execute(post);
try
{
HttpEntity entity = httpResponse.getEntity();
if
(
null
!= entity){
System.out.println(
"-------------------------------------------------------"
);
System.out.println(EntityUtils.toString(uefEntity));
System.out.println(
"-------------------------------------------------------"
);
}
}
finally
{
httpResponse.close();
}
}
catch
( UnsupportedEncodingException e){
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
try
{
closeHttpClient(httpClient);
}
catch
(Exception e){
e.printStackTrace();
}
}
}
private
CloseableHttpClient getHttpClient(){
return
HttpClients.createDefault();
}
private
void
closeHttpClient(CloseableHttpClient client)
throws
IOException{
if
(client !=
null
){
client.close();
}
}