Android中HttpURLConnection与HttpClient的使用与封装

2019-12-10 18:50:58刘景俊

2.2 POST方式

import java.io.DataOutputStream;
 
//将对应部分改为
connection.setRequestMethod("POST");
DataOutputStream data = new DataOutputStream(connection.getOutputStream());
data.writeBytes("stu_no=12345&stu_name=Tom");

传入多个参数用&隔开
如需传入复杂的参数,可使用JSON,关于JSON的用法介绍,可以参考我的另一篇随笔JSON解析的两种方法。
3.HttpClient

3.1 GET方式

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.HttpResponse;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
 
// 创建DefaultHttpClient实例
HttpClient httpClient = new DefaultHttpClient();   
//传入网址,然后执行
HttpGet httpGet = new HttpGet("http://www.easck.com// 由状态码判断请求结果,
// 常见状态码 200 请求成功,404 页面未找到
// 关于HTTP的更多状态码直接GOOGLE
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {    
  // 请求成功,使用HttpEntity获得返回数据
  // 使用EntityUtils将返回数据转换为字符串
  HttpEntity entity = httpResponse.getEntity(); 
  String response = EntityUtils.toString(entity);
  //如果是中文,指定编码 
  //==>String response = EntityUtils.toString(entity, "utf-8"); 
}

3.2 POST方式

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
 
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost("http://www.easck.com// 使用NameValuePair(键值对)存放参数
List<NameValuePair> data = new ArrayList<NameValuePair>();
// 添加键值对
data.add(new BasicNameValuePair("stu_no", 12345));
data.add(new BasicNameValuePair("stu_name", "Tom"));
// 使用setEntity方法传入编码后的参数
httpPost.setEntity(new UrlEncodedFormEntity(data, "utf-8")); 
// 执行该POST请求
HttpResponse httpResponse = httpClient.execute(httpPost);
// .....省略处理httpResponse的代码,与GET方式一致