基础学习总结(八)--HttpClient

在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调用

 1 public static String loginOfGet(String userName, String password) {
 2         HttpClient client = null;
 3         try {
 4             // 定义一个客户端
 5             client = new DefaultHttpClient();
 6
 7             // 定义一个get请求方法
 8             String data = "username=" + userName + "&password=" + password;
 9             HttpGet get = new HttpGet("http://10.0.2.2:8080/ServerItheima28/servlet/LoginServlet?" + data);
10
11             // response 服务器相应对象, 其中包含了状态信息和服务器返回的数据
12             HttpResponse response = client.execute(get);    // 开始执行get方法, 请求网络
13
14             // 获得响应码
15             int statusCode = response.getStatusLine().getStatusCode();
16
17             if(statusCode == 200) {
18                 InputStream is = response.getEntity().getContent();
19                 String text = getStringFromInputStream(is);
20                 return text;
21             } else {
22                 Log.i(TAG, "请求失败: " + statusCode);
23             }
24         } catch (Exception e) {
25             e.printStackTrace();
26         } finally {
27             if(client != null) {
28                 client.getConnectionManager().shutdown();    // 关闭连接, 和释放资源
29             }
30         }
31         return null;
32     }

GET提交

2.使用HttpClient来执行POST调用

 1 public static String loginOfPost(String userName, String password) {
 2         HttpClient client = null;
 3         try {
 4             // 定义一个客户端
 5             client = new DefaultHttpClient();
 6
 7             // 定义post方法
 8             HttpPost post = new HttpPost("http://10.0.2.2:8080/ServerItheima28/servlet/LoginServlet");
 9
10             // 定义post请求的参数
11             List<NameValuePair> parameters = new ArrayList<NameValuePair>();
12             parameters.add(new BasicNameValuePair("username", userName));
13             parameters.add(new BasicNameValuePair("password", password));
14
15             // 把post请求的参数包装了一层.
16
17             // 不写编码名称服务器收数据时乱码. 需要指定字符集为utf-8
18             UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8");
19             // 设置参数.
20             post.setEntity(entity);
21
22             // 设置请求头消息
23 //            post.addHeader("Content-Length", "20");
24
25             // 使用客户端执行post方法
26             HttpResponse response = client.execute(post);    // 开始执行post请求, 会返回给我们一个HttpResponse对象
27
28             // 使用响应对象, 获得状态码, 处理内容
29             int statusCode = response.getStatusLine().getStatusCode();    // 获得状态码
30             if(statusCode == 200) {
31                 // 使用响应对象获得实体, 获得输入流
32                 InputStream is = response.getEntity().getContent();
33                 String text = getStringFromInputStream(is);
34                 return text;
35             } else {
36                 Log.i(TAG, "请求失败: " + statusCode);
37             }
38         } catch (Exception e) {
39             e.printStackTrace();
40         } finally {
41             if(client != null) {
42                 client.getConnectionManager().shutdown();    // 关闭连接和释放资源
43             }
44         }
45         return null;
46     }

POST提交

时间: 2024-10-16 14:56:53

基础学习总结(八)--HttpClient的相关文章

javascript基础学习(八)

javascript之日期对象 学习要点: 日期对象 将日期对象转换为字符串 将日期对象中的日期和时间转换为字符串 日期对象中的日期 日期对象中的时间 设置日期对象中的日期 设置日期对象中的时间 与毫秒相关的方法 一.日期对象 在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间. 日期对象的创建: new Date(); 二.将日期对象转换为字符串 将日期对象转换为字符串可以使用以下4种方法: date.toString();//将日期对象转换为字符串时,采

salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随便的取一个审批人了,有以下方式针对不同的场景可以获取到当前记录的最终审批人以及审批意见. 邮件内容使用以下几种方式实现: 1.代码里面实现邮件发送 2.email template(text/html/custom) 3.visualforce emailTemplate 对发送邮件方式不清楚的,可

salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值

注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-from.html 群里面有个小伙伴问了一个关于两个有Dependence关系的Picklist字段如何在Apex中通过control字段的值获取到Dependence字段的值,针对Salesforce配置来说,我们很好配置出两个Dependence字段的关系,通过点击设置一下include关系即可.如

salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的使用此标签进行解析附件内容,后台只要声明String类型变量用来存储附件名称,Blob类型变量用来存储附件的内容即可. 但是当我们的项目整体使用第三方的前端框架,例如VUE或者angular等前端框架时,有时使用apex:inputFile反而不是很方便,需要用到html的原生的附件上传的标签<inpu

linux基础学习(八)

这一章,我们学习文件的归档,压缩,传输以及网络的管理 ##文件的归档 1.文件归档,就是把多个文件变成一个归档文件 tar    -c            ##创建 -f            ##指定归档文件名称 -t            ##显示归档文件中的内容 -r            ##向归档文件中添加文件 --get         ##取出单个文件 --delete      ##删除单个文件 -x            ##取出归档文件中的所有内容 -C         

Java基础学习笔记八 Java基础语法之接口和多态

接口 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”.接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与实现分离,优化了程序设计.请记住:一切事物均有功能,即一切事物均有接口. 接口的定义 与定义类的class不同,接口定义时需要使用interface关键字.定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件.这点可以让我们将接口看做是一种

salesforce零基础学习(八十一)更改标准字段的label名称(Admin)

我们在开发中往往需要考虑国际化功能,salesforce 提供了国际化功能,在search部分搜索translate,便可以找到translate部分,从而对需要的进行translate.比如picklist values的中英文,字段标题的中英文翻译等等 翻译部分有一项可以设置需要翻译的类型,有时候我们需要对标准表的标准字段进行中英文翻译,但是发现里面并没有translate的地方.比如Account的Name字段是标准的字段,label的名字为Name,中文对应为客户名.但是用户希望将Nam

CSS基础学习十八:CSS布局之浮动

CSS布局中说到定位就不得不提浮动,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动 框的边框为止.由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 一float属性的定义和用法 float属性:设置元素浮动 可能的值: none 不浮动,在文档流内,默认 left  左浮动,脱离文档流 right 右浮动,脱离文档流 inherit 规定应该从父元素继承 float属性的值. float属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文

Python基础学习(八)

Python3 socket Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发 scoket()函数 语法格式如下: socket.socket([soc[type[proto]]]) 参数 soc: 套接字家族可以使AF_UNIX或者AF_INET type:

【Python基础学习篇八】Python函数

函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果. 一.函数的定义 函数的定义使用保留字def定义.函数在使用前必须定义,函数的类型即返回值的类型. Python函数定义的格式如下: def 函数名 (参数1[=默认值1],参数2[=默认值2]...): ... return 表达式 函数名可以是字母.数字或下划线组成的字符串,但不能以数字开头.函数的参数放在一对圆括号中,参数的个数可以有一个或多个,参数之间用逗号隔开,这种参数称之为形式参数. 例子: #!/usr/bin/e