在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端。它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET和HTTP POST调用。

HTTP工作原理:

1.客户端(一般是指浏览器,这里是指自己写的程序)与服务器建立连接

2.建立连接后,客户端向

服务器发送请求

3.服务器接收到请求后,向客户端发送响应信息

4.客户端与服务器断开连接

HttpClient的一般使用步骤:

1.使用DefaultHttpClient类实例化HttpClient对象

2.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。

3.调用execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。

4.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

最后记得要在AndroidManifest.xml文件添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

1.使用HttpClient来执行GET调用

 public static String loginOfGet(String userName, String password) {
HttpClient client = null;
try {
// 定义一个客户端
client = new DefaultHttpClient(); // 定义一个get请求方法
String data = "username=" + userName + "&password=" + password;
HttpGet get = new HttpGet("http://10.0.2.2:8080/ServerItheima28/servlet/LoginServlet?" + data); // response 服务器相应对象, 其中包含了状态信息和服务器返回的数据
HttpResponse response = client.execute(get); // 开始执行get方法, 请求网络 // 获得响应码
int statusCode = response.getStatusLine().getStatusCode(); if(statusCode == 200) {
InputStream is = response.getEntity().getContent();
String text = getStringFromInputStream(is);
return text;
} else {
Log.i(TAG, "请求失败: " + statusCode);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(client != null) {
client.getConnectionManager().shutdown(); // 关闭连接, 和释放资源
}
}
return null;
}

GET提交

2.使用HttpClient来执行POST调用

 public static String loginOfPost(String userName, String password) {
HttpClient client = null;
try {
// 定义一个客户端
client = new DefaultHttpClient(); // 定义post方法
HttpPost post = new HttpPost("http://10.0.2.2:8080/ServerItheima28/servlet/LoginServlet"); // 定义post请求的参数
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("username", userName));
parameters.add(new BasicNameValuePair("password", password)); // 把post请求的参数包装了一层. // 不写编码名称服务器收数据时乱码. 需要指定字符集为utf-8
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8");
// 设置参数.
post.setEntity(entity); // 设置请求头消息
// post.addHeader("Content-Length", "20"); // 使用客户端执行post方法
HttpResponse response = client.execute(post); // 开始执行post请求, 会返回给我们一个HttpResponse对象 // 使用响应对象, 获得状态码, 处理内容
int statusCode = response.getStatusLine().getStatusCode(); // 获得状态码
if(statusCode == 200) {
// 使用响应对象获得实体, 获得输入流
InputStream is = response.getEntity().getContent();
String text = getStringFromInputStream(is);
return text;
} else {
Log.i(TAG, "请求失败: " + statusCode);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(client != null) {
client.getConnectionManager().shutdown(); // 关闭连接和释放资源
}
}
return null;
}

POST提交

最新文章

  1. 安装Python时遇到如下问题,解决方案
  2. SQL SERVER With语法[转]
  3. (重要)使用廉价的VPN隐私会被窥探
  4. php数据结构与算法
  5. 论Postgres的“已提交的而且 xmin’比当前事务的XID小的记录对当前事务才是可见的”
  6. ASP.NET Web API 通过Authentication特性来实现身份认证
  7. 第11章 使用Vsftpd服务传输文件
  8. Nofollow
  9. ural 1993 This cheeseburger you don&#39;t need
  10. Session笔记
  11. ssh 即使主机,同nohup背景脚本
  12. 原生js实现删除class和添加class
  13. Hdoj 2041.超级楼梯 题解
  14. React Native小白入门学习路径——四
  15. php同curl post 发送json并返回json数据实例
  16. leetcode48
  17. 验货或VIP带尾续的半成品,不同客户对于相同编码,需要维护不同的尾续
  18. CMake区分MSVC版本
  19. 超实用 2 ArrayList链表之 员工工资管理系统
  20. C# 回调与 javascritp 回调 比较

热门文章

  1. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结上篇
  2. 关于linux内核模块Makefile的解析
  3. 关于变量在for循环内外定义的思考
  4. 开发一个支持多用户在线的FTP程序
  5. 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎
  6. Android之旅:梦想、学习、坚持、自信、淡定
  7. TQ210开发板NFS挂载android4.0.4的rootfs的方法
  8. 前端开发调试工具控制台之console命令详解
  9. 1822: [JSOI2010]Frozen Nova 冷冻波 二分最大流
  10. Qt之软件打包