如果不通过HTTP访问,那么Web服务不会是一个”Web“服务。在Android上生成一个HTTP请求非常的简单,可以使用Apache提供的HttpClient类,他们包含在Android的org.apache.http程序包中。

首先需要创建HttpClient对象,它实际上是一个DefaultHttpClient对象。

1         HttpClient httpclient=new DefaultHttpClient();

随后就可以构造请求。在当前情况下会生成一个GTTP GET请求,它以查询字符串的形式将任何参数放到URL中。这与HTTP POST请求相反,其发送额外的数据作为请求消息的主体,而不是作为URL的一部分。

为了创建一个GTTP GET请求,需要实例化一个HttpGet对象,并传入想要检索的页面的URL。在当前情况下是传入一个URL,指向Apress站点上关于这本书的页面。

1         HttpGet httpget=new HttpGet("http://www.apress.com/book/view/9781430232674");

随后调用execute方法,将HttpGet对象传递给HttpClient对象以执行该请求。这将返回一个HttpResponse对象。

1             HttpResponse response=httpclient.execute(httpget);

HttpResponse将包含一个HttpEntity对象,其本质上是一条HTTP消息。请求和响应都包含实体。

1             HttpEntity entity=response.getEntity();

HttpEntity上的getContent方法将返回一个InputStream,可以使用它来读取在响应中实际发送的内容。

1                 InputStream inputstream=entity.getContent();

接下来通过一个简短的示例进行说明。

 1 package com.nthm.androidtestActivity; 2  3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.InputStreamReader; 7 import org.apache.http.HttpEntity; 8 import org.apache.http.HttpResponse; 9 import org.apache.http.client.HttpClient;10 import org.apache.http.client.methods.HttpGet;11 import org.apache.http.impl.client.DefaultHttpClient;12 import com.nthm.androidtest.R;13 import android.app.Activity;14 import android.os.Bundle;15 import android.util.Log;16 17 public class SimpleHTTPRequest extends Activity {18 19     @Override20     protected void onCreate(Bundle savedInstanceState) {21         super.onCreate(savedInstanceState);22         setContentView(R.layout.main);

首先将实例化HttpClient对象和HttpGet对象。

1         HttpClient httpclient=new DefaultHttpClient();2         HttpGet httpget=new HttpGet("http://www.apress.com/book/view/9781430232674");

由于HttpClient上的execute方法可能会抛出异常,因此需要将它包装在try/catch块中。

1         try{2             HttpResponse response=httpclient.execute(httpget);3             HttpEntity entity=response.getEntity();4             if(entity!=null){

如果存在HttpEntity,那么访问InputStream以读取响应。

1                 InputStream inputstream=entity.getContent();

在InputStream封装在一个BufferedReader中,并利用一个StringBuilder对象来将它变成一个正常的字符串,从而在最后使用它。

 1                 BufferedReader bufferedreader=new BufferedReader(new InputStreamReader(inputstream)); 2                 StringBuilder stringbuilder=new StringBuilder(); 3                 String currentline=null; 4                 try{ 5                     while((currentline=bufferedreader.readLine())!=null){ 6                         stringbuilder.append(currentline+"\n"); 7                     } 8                 }catch(IOException e){ 9                     e.printStackTrace();10                 }

在完全读取其内容之后,使用StringBuilder对象上的toString方法获取结果字符串,然后调用Log方法将它打印出来。

1                 String result=stringbuilder.toString();2                 Log.i("SimpleHTTPRequest", result);3                 inputstream.close();4             }5         }catch(Exception e){6             e.printStackTrace();7         }8     }9 }

当然,必须有访问Internet的权限,因此需要在AndroidManifest.xml中指定它

1     <uses-permission android:name="android.permission.INTERNE

既然已经知道如何为一个通用的Web资源生成HTTP请求,现在就让我们看看在请求一个Web服务之后如何处理可能返回的数据类型。接下来将以JSON格式的数据作为开始。

更多相关文章

  1. Android应用数据存储几种方式(2)
  2. Android——使用ContentProvider在应用间传递数据
  3. android 8.0 报错StartForeground Bad Notification Error 解决
  4. Android(安卓)fragment 重叠问题,闪退后fragment重叠bug解决方法
  5. Android入门笔记 - 网络通信 - HttpClient
  6. Android(安卓)应用程序退出的四种方法
  7. 查看Android系统内存使用的方法
  8. Android获取屏幕或View宽度和高度的方法
  9. Android的Drawable和Bitmap之间相关转换

随机推荐

  1. (转帖)自定义Android组件之带图像的TextVie
  2. Android开发学习之路--Android(安卓)Stud
  3. Android开发中LogCat工具的使用
  4. Android(安卓)wpa_cli 调试方法(adb shel
  5. eclipse查看Android源代码
  6. android httpclient https 单向连接tomca
  7. android学习笔记(六)
  8. Andriod Style属性
  9. Android日记之2012\01\11
  10. Android学习笔记之文件的保存与读取