- 简介
1.1 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、
功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和协议。
1.2 Android已成功集成了HttpClient,这意味这开发人员可以直接在Android应用中使用 HtppClient来提交请求、接收响应
// 字符集
private static String encoding = "UTF-8";
// 服务器地址+端口号+项目名
//每个人的端口号都不一样,并且每次启动端口号都会改变
private static String basePath = "http://172.20.10.9:8080/Y2Pro02";
// 子控制器的路径
private String path;
// 保存请求中的参数
private List<NameValuePair> params = new ArrayList<NameValuePair>();;
public HttpClientPost(String path) {
super();
this.path = path;
}
注:在API 23中,Google已经移除了移除了Apache HttpClient相关的类 ,
在build.gradle中的android {}中加上useLibrary ‘org.apache.http.legacy’,
详情见资料“”
1 创建HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
2 创建HttpGet(或HttpPost)对象
HttpGet HttpGet = new HttpGet(“http://www.baidu.com”);
HttpPost httpPost = new HttpPost(“http://www.baidu.com”);
3 添加参数(可选)
setParams(HttpParams params)//HttpGet和HttpPost共有
setEntity(HttpEntity entity)//HttpPost独有
//测试代码
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_main_add:
add();
break;
case R.id.bt_main_edit:
edit();
break;
case R.id.bt_main_del:
del();
break;
case R.id.bt_main_load:
load();
break;
case R.id.bt_main_list:
list();
break;
}
}
private void add() {
Log.i("test", "add...");
HttpClientPost clientPost=new HttpClientPost("/bookAction.action");
clientPost.addParam("methodName","addBook");
clientPost.addParam("book_name","你是我的眼");
clientPost.addParam("book_category_id","4");
clientPost.addParam("book_author","新大陆");
clientPost.addParam("book_price","24.8");
clientPost.addParam("publishing","呃呃呃");
clientPost.addParam("book_desc","牡丹江阿合格");
clientPost.submit(new HttpClientPost.Callback() {
@Override
public void execute(String json) {
Log.i("test",json);
}
});
}
private void edit() {
Log.i("test", "edit...");
HttpClientPost clientPost=new HttpClientPost("/bookAction.action");
clientPost.addParam("methodName","updateBook");
clientPost.addParam("book_name","略略略");
clientPost.addParam("book_id","13");
clientPost.addParam("book_category_id","6");
clientPost.addParam("book_author","新大陆");
clientPost.addParam("book_price","24.8");
clientPost.addParam("publishing","呃呃呃");
clientPost.addParam("book_desc","牡丹江阿合格");
clientPost.submit(new HttpClientPost.Callback() {
@Override
public void execute(String json) {
Log.i("test",json);
}
});
}
private void del() {
Log.i("test", "del...");
HttpClientPost clientPost=new HttpClientPost("/bookAction.action");
clientPost.addParam("methodName","delBook");
clientPost.addParam("book_id","20");
clientPost.submit(new HttpClientPost.Callback() {
@Override
public void execute(String json) {
Log.i("test",json);
}
});
}
private void load() {
Log.i("test", "load...");
HttpClientPost clientPost=new HttpClientPost("/bookAction.action");
clientPost.addParam("methodName","bookList");
clientPost.addParam("book_name","你是我的眼");
clientPost.submit(new HttpClientPost.Callback() {
@Override
public void execute(String json) {
Log.i("test",json);
ObjectMapper om=new ObjectMapper();
try {
Map<String, Object> rs=om.readValue(json,Map.class);
Log.i("test",rs.get("total").toString());
Log.i("test",rs.get("rows").getClass().getName());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private void list() {
Log.i("test", "list...");
HttpClientPost clientPost=new HttpClientPost("/bookAction.action");
clientPost.addParam("methodName","bookList");
clientPost.submit(new HttpClientPost.Callback() {
@Override
public void execute(String json) {
Log.i("test",json);
ObjectMapper om=new ObjectMapper();
try {
Map<String, Object> rs=om.readValue(json,Map.class);
Log.i("test",rs.get("total").toString());
Log.i("test",rs.get("rows").toString());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}