深入Android通过Apache HTTP访问HTTP资源(二)(转)

深入Android通过Apache HTTP访问HTTP资源(二)(转)

  (2012-02-20 14:48:10)
标签: 

编程

 

it

 

杂谈

分类: android

转自:http://blog.csdn.net/jiahui524/article/details/6881006


三步曲:

1.  创建HttpGet或者HttpPost对象,将要请求的URL对象构造方法传入HttpGet、HttpPost对象

2.  通过HttpClent接口的实现类DefaultClent.的excute(HttpUriRequest request)而我们已经知道HttpGet和HttpPost类都实现了HttpUriRequest接口,所以这里面,我们可以将第1步创建好的HttpGet或者HttpPost对象传入进来。来得到HttpResponse对象

3.  通过HttpResponse取到返回的一些信息,再做提取


帖上一部分源代码:

Java代码:

  1.        private String request(String method, String url) {  
  2.               HttpResponse httpResponse null;  
  3.               StringBuffer result new StringBuffer();  
  4.               try {  
  5.                      if (method.equals("GET")) {  
  6.                             // 1.通过url创建HttpGet对象  
  7.                             HttpGet httpGet new HttpGet(url);  
  8.                             // 2.通过DefaultClient的excute方法执行返回一个HttpResponse对象  
  9.                             HttpClient httpClient new DefaultHttpClient();  
  10.                             httpResponse httpClient.execute(httpGet);  
  11.                             // 3.取得相关信息  
  12.                             // 取得HttpEntiy
  13.                             HttpEntity httpEntity httpResponse.getEntity();  
  14.                             // 得到一些数据  
  15.                             // 通过EntityUtils并指定编码方式取到返回的数据  
  16.                             result.append(EntityUtils.toString(httpEntity, "utf-8"));  
  17.                             //得到StatusLine接口对象  
  18.                             StatusLine statusLine httpResponse.getStatusLine();  
  19.                             //得到协议  
  20.                             result.append("协议:" statusLine.getProtocolVersion() "\r\n");  
  21.                             int statusCode statusLine.getStatusCode();  
  22.                             result.append("状态码:" statusCode "\r\n");  
  23.                      else if (method.equals("POST")) 
  24.                             // 1.通过url创建HttpGet对象  
  25.                             HttpPost httpPost new HttpPost(url);  
  26.                             // 2.通过DefaultClient的excute方法执行返回一个HttpResponse对象  
  27.                             HttpClient httpClient new DefaultHttpClient();  
  28.                             httpResponse httpClient.execute(httpPost);  
  29.                             // 3.取得相关信息  
  30.                             // 取得HttpEntiy  
  31.                             HttpEntity httpEntity httpResponse.getEntity();  
  32.                             // 得到一些数据  
  33.                             // 通过EntityUtils并指定编码方式取到返回的数据  
  34.                             result.append(EntityUtils.toString(httpEntity, "utf-8"));  
  35.                             StatusLine statusLine httpResponse.getStatusLine();  
  36.                             statusLine.getProtocolVersion();  
  37.                             int statusCode statusLine.getStatusCode();  
  38.                             result.append("状态码:" statusCode "\r\n");  
  39.                      }  
  40.               catch (Exception e) {  
  41.                      Toast.makeText(HTTPDemoActivity.this"网络连接异常"Toast.LENGTH_LONG).show();    
  42.               
  43.               return result.toString();  
  44.        }  
  45.  
  46.        public void getImage(String url) {  
  47.               try {  
  48.                      // 1.通过url创建HttpGet对象  
  49.                      HttpGet httpGet new HttpGet(url);  
  50.                      // 2.通过DefaultClient的excute方法执行返回一个HttpResponse对象  
  51.                      HttpClient httpClient new DefaultHttpClient();  
  52.                      HttpResponse httpResponse httpClient.execute(httpGet); 
  53.                      // 3.取得相关信息  
  54.                      // 取得HttpEntiy 
  55.                      HttpEntity httpEntity httpResponse.getEntity();  
  56.                      // 4.通过HttpEntiy.getContent得到一个输入流 
  57.                      InputStream inputStream httpEntity.getContent();  
  58.                      System.out.println(inputStream.available());  
  59.                      //通过传入的流再通过Bitmap工厂创建一个Bitmap  
  60.                      Bitmap bitmap BitmapFactory.decodeStream(inputStream);  
  61.                      //设置imageView            
  62.                      imageView.setImageBitmap(bitmap);  
  63.               catch (Exception e) {  
  64.                      Toast.makeText(HTTPDemoActivity.this"网络连接异常"Toast.LENGTH_LONG)  
  65.                      .show();  
  66.               }  
  67.        }  
  68. }  

开发注意事项:

1.要想访问本地机器不能写成localhost或者127.0.0.1要写成10.0.2.2。这是因为Android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!若你想在模拟器simulator上面访问你的电脑,那么就使用android内置的IP: 10.0.2.2,10.0.2.2是模拟器设定的特定ip,是你电脑的别名,在模拟器上用10.0.2.2就能成功访问你的电脑本机。

2.记得加上网络访问权限

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

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值