为了访问互联网,需要设置应用程序获取“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网络连接》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. ​2021年机器学习什么风向?把注意力放在MLP上
  2. webService初探
  3. java %2f_字符串“http%3A%2F%2F”转换成http://详解
  4. java 中 的 字节流!
  5. HTTP 302报文
  6. 这里有一份面筋请查收(七)
  7. web安全攻防从入门到放弃-记录
  8. input输入框匹配数字(带两位小数) js--金额匹配
  9. 彰显城市等级的最典型代表,商业综合体城市PSD海报素材
  10. 输入n求N*N矩阵,规定矩阵沿45度线递增
  11. 网络地址16777343是什么地址?
  12. 自媒体怎么做?5个操作步骤,普通人也可以做
  13. 【实战毕业论文排版】图片添加题注实现自动编号
  14. 请没有买房和买车的朋友一定认真的看一下(转)
  15. ar 华为路由器 端口映射_华为AR1220-S路由器WEB界面鸡肋使用命令映射多端口方法...
  16. excel表格锁定怎么解锁_让用户锁定或解锁Excel工作簿
  17. HASH查找算法—JAVA实现
  18. 软考中级——软件设计师备考资料
  19. Node.js stream模块(一)可读流
  20. 吴恩达深度学习课程-Course 2 改善深层神经网络 第三周 TensorFlow入门编程作业

热门文章

  1. 为什么visual的联机浏览功能不能用_Minecraft非正版联机教程
  2. 【web前端】a只显示visited属性问题解决方法
  3. 【2019杭电多校第六场1008=HDU6641】TDL(思维)
  4. 数据结构基本操作_【算法与数据结构 03】数据处理的基本操作——增删查
  5. 畅想未来计算机300字,畅想未来作文300字
  6. java 下载速度计算_测量Java下载速度
  7. 自动驾驶 10-3: 全球导航卫星系统 (GNSS)The Global Navigation Satellite Systems
  8. mysql initialsize,单机数据库优化
  9. java jsonobject 清空_有没有办法,我可以清空整个JSONObject – java
  10. prthon日期型、字符串、数值、时间戳相互转换