深入Android通过Apache HTTP访问HTTP资源
HttpClient接口
实现类:DefaultHttpClient这也是常用的一个用于实现HttpClient接口的子类,
HttpClietnt中定义的常用抽象方法
方法名称
描述
public abstract HttpResponse execute (HttpUriRequest request)
通过HttpUriRequest对象执行返回一个HttpResponse对象
public abstract HttpResponse execute (HttpUriRequest request, HttpContext context)
通过HttpUriRequest对象和HttpContext对象执行返回一个HttpResponse对象
HttpResponse接口
HttpResponse接口里定义了一系列的set、get方法
方法名称
描述
public abstract HttpEntity getEntity ()
得到一个HttpEntity对象
public abstract StatusLine getStatusLine ()
得到一个StatusLine(也就是HTTP协议中的状态行我们知道HTPP状态行由三部分组成:HTTP协议版本,服务器发回的响应状态代码,状态码的文本描述)接口的实例对象
public abstract Locale getLocale ()
得到Locale对象
….相应的set方法
StatusLine接口
StatusLine接口的常用方法。也可以通过其实现的子类BasicStatusLine类里查看
方法名称
描述
public abstract ProtocolVersion getProtocolVersion ()
得到一个ProtolVersion对象它是一个HTTP版本的封装类,在这个类里定义了一系列的方法我们可以通过它的getProtocol方法取得协议名称,getMinor得到HTPP协议的版本
public abstract String getReasonPhrase ()
状态码的文本描述
public abstract int getStatusCode ()
得到响应状态码
HttpEntity接口
HttpEntity是一个接口
方法名称
描述
public abstract InputStream getContent ()
得到一个输入流对象,我们可以用这个流来操作文件(例如保存文件到SD卡)
public abstract Header getContentType ()
得到Content-Type信息头
public abstract Header getContentEncoding ()
得到Content-Encoding信息头
我们可以通过EntityUtils类,它是一个final类,一个专门针对于处理HttpEntity的帮助类
常用方法
EntityUtils类
EntityUtils类的常用方法
方法名称
描述
public static String getContentCharSet (HttpEntity entity)
设置HttpEntity对象的ContentCharset
public static byte[] toByteArray (HttpEntity entity)
将HttpClient转换成一个字节数组
public static String toString (HttpEntity entity, String defaultCharset)
通过指定的编码方式取得HttpEntity里字符串内容
public static String toString (HttpEntity entity)
取得HttpEntity里字符串内容
NameValuePair
NameValuePair接口是一个简单的封闭的键值对,只提供了一个getName()和一个getValue方法。主要用到的实现类BasicNameVaulePair
HttpGet类
HttpGet它实现了HttpRequest、HttpUriRequest接口
构造方法
方法名称
描述
public HttpGet ()
无参数构造方法用以实例化对象
public HttpGet (URI uri)
通过URI对象构造HttpGet对象
public HttpGet (String uri)
通过指定的uri字符串地址构造实例化HttpGet对象
HttpPost类
同样它也实现了HttpRequest、HttpUriRequest接口等一系列接口
构造方法
方法名称
描述
public HttpPost ()
无参数构造方法用以实例化对象
public HttpPost (URI uri)
通过URI对象构造HttpPost对象
public HttpPost (String uri)
通过指定的uri字符串地址构造实例化HttpPost对象
清楚了上面的所有常用API后,下面我们能过Apache HTTP来访问HTTP资源
三步曲:
1. 创建HttpGet或者HttpPost对象,将要请求的URL对象构造方法传入HttpGet、HttpPost对象
2. 通过HttpClent接口的实现类DefaultClent.的excute(HttpUriRequest request)而我们已经知道HttpGet和HttpPost类都实现了HttpUriRequest接口,所以这里面,我们可以将第1步创建好的HttpGet或者HttpPost对象传入进来。来得到HttpResponse对象
3. 通过HttpResponse取到返回的一些信息,再做提取
实例图片:
帖上一部分源代码:
布局文件:
view plainprint?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="url:" />
<EditText android:id="@+id/urlText" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="http://10.0.2.2:8080/NetServer/queryServlet?bookId=2" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:gravity="right">
<Button android:id="@+id/getBtn" android:text="GET请求"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:id="@+id/postBtn" android:text="POST请求"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<TextView android:id="@+id/resultView" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="图片url:" />
<EditText android:id="@+id/imageurlText" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="/2011/1017/20111017020658704.jpg" />
</LinearLayout>
<Button android:id="@+id/imgBtn" andro
补充:移动开发 , Android ,