深入Android通过Apache HTTP访问HTTP资源
2016-01-26 15:34
423 查看
HttpClient接口
实现类:DefaultHttpClient这也是常用的一个用于实现HttpClient接口的子类,
HttpClietnt中定义的常用抽象方法
HttpResponse接口
HttpResponse接口里定义了一系列的set、get方法
StatusLine接口
StatusLine接口的常用方法。也可以通过其实现的子类BasicStatusLine类里查看
HttpEntity接口
HttpEntity是一个接口
我们可以通过EntityUtils类,它是一个final类,一个专门针对于处理HttpEntity的帮助类
常用方法
EntityUtils类
EntityUtils类的常用方法
NameValuePair
NameValuePair接口是一个简单的封闭的键值对,只提供了一个getName()和一个getValue方法。主要用到的实现类BasicNameVaulePair
HttpGet类
HttpGet它实现了HttpRequest、HttpUriRequest接口
构造方法
HttpPost类
同样它也实现了HttpRequest、HttpUriRequest接口等一系列接口
构造方法
清楚了上面的所有常用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取到返回的一些信息,再做提取
实例图片:
帖上一部分源代码:
布局文件:
?
Java代码:
?
开发注意事项:
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"/>
源代码下载:http://download.csdn.net/detail/jiahui524/3690598
转自:http://blog.csdn.net/jiahui524/article/details/6881006
实现类:DefaultHttpClient这也是常用的一个用于实现HttpClient接口的子类,
HttpClietnt中定义的常用抽象方法
方法名称 | 描述 |
public abstract HttpResponse execute (HttpUriRequest request) | 通过HttpUriRequest对象执行返回一个HttpResponse对象 |
public abstract HttpResponse execute (HttpUriRequest request, HttpContext context) | 通过HttpUriRequest对象和HttpContext对象执行返回一个HttpResponse对象 |
HttpResponse接口里定义了一系列的set、get方法
方法名称 | 描述 |
public abstract HttpEntity getEntity () | 得到一个HttpEntity对象 |
public abstract StatusLine getStatusLine () | 得到一个StatusLine(也就是HTTP协议中的状态行我们知道HTPP状态行由三部分组成:HTTP协议版本,服务器发回的响应状态代码,状态码的文本描述)接口的实例对象 |
public abstract Locale getLocale () | 得到Locale对象 |
….相应的set方法 |
StatusLine接口的常用方法。也可以通过其实现的子类BasicStatusLine类里查看
方法名称 | 描述 |
public abstract ProtocolVersion getProtocolVersion () | 得到一个ProtolVersion对象它是一个HTTP版本的封装类,在这个类里定义了一系列的方法我们可以通过它的getProtocol方法取得协议名称,getMinor得到HTPP协议的版本 |
public abstract String getReasonPhrase () | 状态码的文本描述 |
public abstract int getStatusCode () | 得到响应状态码 |
HttpEntity是一个接口
方法名称 | 描述 |
public abstract InputStream getContent () | 得到一个输入流对象,我们可以用这个流来操作文件(例如保存文件到SD卡) |
public abstract Header getContentType () | 得到Content-Type信息头 |
public abstract Header getContentEncoding () | 得到Content-Encoding信息头 |
常用方法
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接口是一个简单的封闭的键值对,只提供了一个getName()和一个getValue方法。主要用到的实现类BasicNameVaulePair
HttpGet类
HttpGet它实现了HttpRequest、HttpUriRequest接口
构造方法
方法名称 | 描述 |
public HttpGet () | 无参数构造方法用以实例化对象 |
public HttpGet (URI uri) | 通过URI对象构造HttpGet对象 |
public HttpGet (String uri) | 通过指定的uri字符串地址构造实例化HttpGet对象 |
同样它也实现了HttpRequest、HttpUriRequest接口等一系列接口
构造方法
方法名称 | 描述 |
public HttpPost () | 无参数构造方法用以实例化对象 |
public HttpPost (URI uri) | 通过URI对象构造HttpPost对象 |
public HttpPost (String uri) | 通过指定的uri字符串地址构造实例化HttpPost对象 |
三步曲:
1. 创建HttpGet或者HttpPost对象,将要请求的URL对象构造方法传入HttpGet、HttpPost对象
2. 通过HttpClent接口的实现类DefaultClent.的excute(HttpUriRequest request)而我们已经知道HttpGet和HttpPost类都实现了HttpUriRequest接口,所以这里面,我们可以将第1步创建好的 HttpGet或者HttpPost对象传入进来。来得到HttpResponse对象
3. 通过HttpResponse取到返回的一些信息,再做提取
实例图片:
帖上一部分源代码:
布局文件:
?
?
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"/>
源代码下载:http://download.csdn.net/detail/jiahui524/3690598
转自:http://blog.csdn.net/jiahui524/article/details/6881006
相关文章推荐
- Exception in thread "http-bio-8081-exec-3" java.lang.OutOfMemoryError: PermGen space
- HAProxy一箭双雕——让一个端口完成两件事
- Android网络请求的第三库AsyncHttpclient
- 理解HTTP幂等性
- AngualrJS中每次$http请求时的一个遮罩层Directive
- linux网络子系统内核分析
- android Xutils Http模块分析
- JAVA利用HttpClient进行POST请求(HTTPS)
- DHT网络存储设计
- 项目修炼之路(2)测试-TCPCopy
- java网络编程(一)使用TCP协议完成客户端与服务端的数据传递
- http头文件User-Agent详解
- http header详解
- SGU 176 Flow construction-上下界网络流
- VirtualBox配置网络以及SSH登陆配置
- 网络资源:常用的图表类库插件
- Ubuntu NetworkManager 使用:Ubuntu的wired Networks 变灰色,无法连接网络
- CentOS minimal安装后网络配置
- QT5网络相关(QNetworkAccessManager)
- 查看 并发请求数及其TCP连接状态【转】