《Android开发卷——HTTP网络通信,HTTP网络连接》
为了访问互联网,需要设置应用程序获取“androd.permission.INTERNET”权限的许可。
一、使用Apache接口(org.apache.http)并实现网络连接的基本知识
HttpClient client = new DefaultHttpClient();
要想从服务器检索有用的网络信息,必须使用HttpGet类构造器来帮助实现
HttpGet request = new HttpGet(“http://www.*****.com/test?id=***&name=****”);
然后还需要类HttpClient的execute()方法的帮助,通过此方法中的HttpGet对象来检索
HttpResponse response = client.execute(request);
最后需要解读已检索的响应(读取网页内容)
BufferedReader rd = new BufferedRreader(new InputStreamReader(response.getEntity().getContent()));
String line = “”;
While((line = rd.readLine()) != null){
Log.d(“output:”,line);
line = line+line;
}
Post方法
HttpClient client = new DafaultHttpClient();
HttpPost post = new HttpPost(URL);
List<NameValuePair> parms = new ArrayList<NameValuePair>();
parms.add(new NameValuePair(“id”,”1001”));
parms.add(new NameValuePair(“name”,”johm”));
HttpEntity formEntity = new UrlEncodeFormEntity(params);
post.setEntity(formEntity,HTTP.UTF_8);
Httpresponse response = new client.execute(post);
If(response.getStatusLine.getStatusCode == HttpStatus.SC_OK){
InputStream is = response.getEntity().getContent();
String result = isStreamString(is);
Assert.assertEqualse(result,”POST_SUCCESS”);//断言判断网页返回的内容是否为” POST_SUCCESS”;
}private String isStreamString(InputStream is) throws Exception{
ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len = -1;
while((len = is.read(buf)) != -1){
bo.write(buf,0,len);
}
return new String(bo.toByteArray());
}
在文件MyApplication.java中扩展了系统的Application:
public class MyApplication extends Application{
private HttpClient httpClient;
public void onCreate(){
super.onCreate();
httpClient = this.createHttpClient();
}
public void onLowMemory(){
super.onLowMemory();
this.shutdownHttpClient();
}
public void onTerminamte(){
super.onTerminate();
this.shutdownHttpClient();
}
//创建HttpClient实例
private HttpClient createHttpClient(){
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setversion(params,HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params,HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params,true);SchemeRegistry schReg = new SchemeRegistry();
schReg.register(“http”,PlainSocketFactory.getSocketFactory(),80);
schReg.register(“https”,SSLSocketFatory.getSocketFactory(),443);ClientConnectionManager connMgr = new ThreadSafeClientConnManager(params,schReg);
return new DefaultHttpClient(connMgr,params);
}
//关闭连接管理器并释放资源
private void shutdownHttpClient(){
if(httpClient != null && httpClient.getConnectionManager() != null){
httpClient.getConnectionManager().shutdown();
}
//对外提供HttpClient实例
public HttpClient getHttpClient(){
return httpClient;
}
}
在上述代码中重写了onCreate()方法,在系统启动时就创建一个HttpClient。
重写了onLowMemory()和onTerminate()方法,在内存不足和应用结束时关闭连接,释放资源。
需要注意的是,当实例化DefaultHttpClient时,传入一个由ThreadSafeClientConnManager创建的ClientConnectionManager实例,负责管理HttpClient的HTTP连接。
在文件AndroidManifest.xml中进行如下配置,目的是让“优化”版的Application生效。
<application android:name=”.MyApplication”…>…</application>
系统就会使用前面编写的MyApplication,然后就可以在context中调用getApplication()来获取MyApplication实例。
经过上面的“优化”处理配置,接下来就可以在活动中应用了
private void execute(){
try{
MyApplication app = (MyApplication) this.getApplication();HttpClient client = app.getHttpClient();
HttpGet request = new HttpGet(“http://www.*****.com/test?id=***&name=****”);
HttpResponse response = client.execute(request);
if(response.getStatusLine.getStatusCode == HttpStatus.SC_OK){
InputStream is = response.getEntity().getContent();
String result = isStreamString(is);
Toast.makeText(this,result,Toast.LENGTH_LONG).show();
}
}catch(Exception e){
e.printStackTrace();
}
}
private String isStreamString(InputStream is) throws Exception{
ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len = -1;
while((len = is.read(buf)) != -1){
bo.write(but,0,len);
}
return new String(bo.toByteArray());
}
尊重原创,转载请注明出处:http://blog.csdn.net/chillax_li/article/details/22078625
转载于:https://www.cnblogs.com/Chillax-KUN/p/3841308.html
《Android开发卷——HTTP网络通信,HTTP网络连接》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- ​2021年机器学习什么风向?把注意力放在MLP上
- webService初探
- java %2f_字符串“http%3A%2F%2F”转换成http://详解
- java 中 的 字节流!
- HTTP 302报文
- 这里有一份面筋请查收(七)
- web安全攻防从入门到放弃-记录
- input输入框匹配数字(带两位小数) js--金额匹配
- 彰显城市等级的最典型代表,商业综合体城市PSD海报素材
- 输入n求N*N矩阵,规定矩阵沿45度线递增
- 网络地址16777343是什么地址?
- 自媒体怎么做?5个操作步骤,普通人也可以做
- 【实战毕业论文排版】图片添加题注实现自动编号
- 请没有买房和买车的朋友一定认真的看一下(转)
- ar 华为路由器 端口映射_华为AR1220-S路由器WEB界面鸡肋使用命令映射多端口方法...
- excel表格锁定怎么解锁_让用户锁定或解锁Excel工作簿
- HASH查找算法—JAVA实现
- 软考中级——软件设计师备考资料
- Node.js stream模块(一)可读流
- 吴恩达深度学习课程-Course 2 改善深层神经网络 第三周 TensorFlow入门编程作业
热门文章
- 为什么visual的联机浏览功能不能用_Minecraft非正版联机教程
- 【web前端】a只显示visited属性问题解决方法
- 【2019杭电多校第六场1008=HDU6641】TDL(思维)
- 数据结构基本操作_【算法与数据结构 03】数据处理的基本操作——增删查
- 畅想未来计算机300字,畅想未来作文300字
- java 下载速度计算_测量Java下载速度
- 自动驾驶 10-3: 全球导航卫星系统 (GNSS)The Global Navigation Satellite Systems
- mysql initialsize,单机数据库优化
- java jsonobject 清空_有没有办法,我可以清空整个JSONObject – java
- prthon日期型、字符串、数值、时间戳相互转换