android 5.1 httpclient,【Android进阶学习】Http编程之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文件添加网络权限
下面是具体的例子:
1.使用HttpClient来执行GET调用
在LogCat窗口就能看到输出的信息
packagecom.lingdududu.http;
importjava.io.InputStream;
importorg.apache.http.HttpResponse;
importorg.apache.http.HttpStatus;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.impl.client.DefaultHttpClient;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
publicclassHttpGetActivityextendsActivity {
String uri ="http://developer.android.com/";
finalString TAG_STRING ="TAG";
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
//得到HttpClient对象
HttpClient getClient =newDefaultHttpClient();
//得到HttpGet对象
HttpGet request =newHttpGet(uri);
//客户端使用GET方式执行请教,获得服务器端的回应response
HttpResponse response = getClient.execute(request);
//判断请求是否成功
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
Log.i(TAG_STRING,"请求服务器端成功");
//获得输入流
InputStream inStrem = response.getEntity().getContent();
intresult = inStrem.read();
while(result != -1){
System.out.print((char)result);
result = inStrem.read();
}
//关闭输入流
inStrem.close();
}else{
Log.i(TAG_STRING,"请求服务器端失败");
}
}catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用HTTP GET调用有一个缺点就是,请求的参数作为URL一部分来传递,以这种方式传递的时候,URL的长度应该在2048个字符之内。如果超出这个这范围,就要使用到HTTP POST调用。
2.使用HttpClient来执行POST调用
使用POST调用进行参数传递时,需要使用NameValuePair来保存要传递的参数。NameValuePair封装了一个键/值组合。另外,还需要设置所使用的字符集。
packagecom.androidbook.services.httppost;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclassHttpPostActivityextendsActivity {
String uri ="http://developer.android.com/";
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
BufferedReader in =null;
try{
HttpClient client =newDefaultHttpClient();
HttpPost request =newHttpPost("http://code.google.com/android/");
//使用NameValuePair来保存要传递的Post参数
List postParameters =newArrayList();
//添加要传递的参数
postParameters.add(newBasicNameValuePair("id","12345"));
postParameters.add(newBasicNameValuePair("username","dave"));
//实例化UrlEncodedFormEntity对象
UrlEncodedFormEntity formEntity =newUrlEncodedFormEntity(
postParameters);
//使用HttpPost对象来设置UrlEncodedFormEntity的Entity
request.setEntity(formEntity);
HttpResponse response = client.execute(request);
in =newBufferedReader(
newInputStreamReader(
response.getEntity().getContent()));
StringBuffer string =newStringBuffer("");
String lineStr ="";
while((lineStr = in.readLine()) !=null) {
string.append(lineStr +"\n");
}
in.close();
String resultStr = string.toString();
System.out.println(resultStr);
}catch(Exception e) {
// Do something about exceptions
}finally{
if(in !=null) {
try{
in.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
}
android 5.1 httpclient,【Android进阶学习】Http编程之HttpClient相关推荐
- Android程序员该如何进阶学习以预防35岁中年职场危机?
一.大家都在担心的问题 不只是Android,很多程序员都在担心业界的"35岁危机",担心自己到35岁后就被市场淘汰. 比如最近就经常被大家问到这样的问题,比如这样的: 大佬好,目 ...
- 【Android进阶学习】Http编程之HttpClient
在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端.它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET ...
- java 高级编程进阶_JAVA高级编程之hibernate进阶学习
二级缓存 hibernate的session缓存 在事务级别进行持久化数据的缓存操作. 当然,也有可能分别为每个类(或集合),配置集群.或 JVM 级别(SessionFactory 级别)的缓存.你 ...
- 从C语言学习谈编程之路
不知不觉,接触计算机编程已经5年了.从刚上大学接触C语言一路走来,感触颇多.刚开始学C语言,从懵懵懂懂.跌跌撞撞到趋于熟悉.逐渐掌握,这中间有太多坎坷.再到学习C++.Java,走向Android开发 ...
- Linux学习——网络编程之TCP/IP协议原理
小知识 设置ulimit值(Linux文件句柄数量)永久生效 新浪博客[转] 设置ulimit值(Linux文件句柄数量)永久生效_祥子_新浪博客,祥子,http://blog.sina.com.cn ...
- android java服务,Android进阶学习必会:Java Binder中的系统服务
前言 这个知识点是Android进阶学习必须掌握的知识点之一,也是高阶Android架构师经常问到的点.在这里分想给大家,希望对大家的工作和学习有所帮助.喜欢本文的记得点赞关注哦~ 在前面的Andro ...
- 腾讯T2大牛亲自讲解!Android开发唯一的出路:进阶学习
##前言 近来,互联网公司"内卷"风暴甚嚣尘上,越来越多的人开始讨论这个问题,这个现象在知乎的反应尤其明显,相关问题多次上了热榜,关注者和浏览量都非常的高. 在"内卷&q ...
- 吹爆系列:教科书级别的Android音视频入门进阶学习手册,学完我成功“挤进”了抖音音视频开发岗
Android开发工作两年,真的是感觉Android应用层开发没什么前景了,于是打算在网络安全,智能硬件,音视频这几个方向发展,考虑了一段时间,最终决定选择音视频.理由就不说了,既然选择了就要好好深耕 ...
- android进阶知识总结,Android进阶学习有哪些知识点
Android进阶学习有哪些知识点 发布时间:2020-07-29 12:50:39 来源:亿速云 阅读:114 作者:Leah 本篇文章给大家分享的是有关Android进阶学习有哪些知识点,小编觉得 ...
- Android八大模块进阶学习笔记(性能优化、百大框架、高级UI、Flutter、Kotlin...)
今年来,Android开发行业的就业形势愈加严峻,无论刚刚入门Android学习没有头绪的.还是开发多年想要突破薪资范畴的,都需要跳出编码和业务的局限,学会选型.扩展, 提升编程思维,建立良好的职业规 ...
最新文章
- OpenCV 霍夫圆检测
- 程序员的4种心态与4种将来
- 念数字python_我是怎样利用python PIL将图片数字读出来的?
- Strtus2工作流程及原理
- 你会使用回调函数吗?
- java程序 扑克牌概率_java – 最简单的扑克牌评估算法
- 读取和设置SPFIELD的值
- MCSA Windows Server 2016 Complete Study Guide, 2nd Edition 免积分下载
- 项目管理能力提升四要素
- 洛谷-P1427-小鱼的数字游戏
- 数字电路(4)门电路(三)
- 2018APP推广计划方案(完整版)
- UI设计必掌握的软件之一:Axure!
- 2.模仿小米通讯录的快速索引demo
- 【爬虫】批量下载B站收藏夹视频 - Python
- 天津大学计算机组成原理,天津大学计算机学院计算机组成原理复习材料.docx
- 树的直径,树的中心,树的重心
- c语言一般用大写字母定义什么,c语言程序格式是什么
- Java MD5和SHA256等常用加密算法
- WARNING: Ignoring invalid distribution -ip 解决方案