关注官方微博:
| 金融之星 > 滚动 > - 正文

使用HttpClient发送HTTP请求(通过get方法获取数据)

2019-01-02 13:27 来源:互联网综合
金融之星 更多文章>>

【系列】Android系列之网络:(持续更新)

Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

Android系列之网络(二)----HTTP请求头与响应头

Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

Android系列之网络(四)----SAX方式解析XML数据

【正文】 

一、HTTP协议初探:

HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。

使用HttpClient发送HTTP请求(通过get方法获取数据)

这几个名词有一种通俗的解释:

通讯协议:双方对话的标准

通用的:用了都说好,谁用谁知道

无状态的:翻脸不认人

超文本:除了文本,还可以是音频、视频

HTTP协议与Android开发之间的关系:

使用HttpClient发送HTTP请求(通过get方法获取数据)

HTTP协议的学习重点:

Http协议基础概念、

请求响应模型、

提交请求的不同方法、

响应状态判断、

获取响应以及解析响应、

数据下载的实现方法、

数据上传的实现方法、

请求头详细内容、

响应头详细内容等

关于http协议的学习,推荐两个链接:

二、http协议概念:

1、http协议定义:

WWW是以Internet作为传输媒介的一个应用系统,WWW网上基本的传输单位是Web网页。WWW的工作是基于客户机/服务器计算模型,由Web浏览器和Web服务器构成,两者之间采用超文本传输协议HTTP进行通信。

HTTP协议时基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层的协议,是通用的、无状态的面向对象的协议。 

如果要实现网络互联我们要思考两个需要解决的技术问题:

第一:浏览器和服务器是通过什么来连接的。

第二:这种连接方式是怎么实现的。

通过Internet去发送到服务器当中,而Internet内部可以通过三种方式来实现发送信息和数据:

第一种:HTTP协议,也是在工作中最常用的,是建立在TCP/IP基础上实现的。

第二种:FTP协议

第三种:TCP/IP协议,它也是最底层的协议,其它的方式必须是要通过它,但是要想实现这种协议必须要实现socket编程,这种方法是用来上传一些比较大的文件,视频,进行断点续传的操作。

2、客户端连接服务器实现内部的原理如下:

使用HttpClient发送HTTP请求(通过get方法获取数据)

使用HttpClient发送HTTP请求(通过get方法获取数据)

分析上图,步骤如下:

第一步:在浏览器客户端中得到用户输入的内容。 

第二步:浏览器得到这个网址之后,内部会将这个域名发送到DNS上,进行域名解析。得到它的IP之后就会链接到指定的服务器上,假如服务器的地址是:221.104.13.32:80,从浏览器到服务器端口它使用到最底层的TCP/IP协议。 

第三步:实现TCP/IP协议用Socket来完成,使用了Socket的套接字。 

第四步:服务器端的80端口监听客户端的链接,这样客户端到服务器就链接上了。

服务器接收到这些内容之后,并按照这些请求的路径找到对应的页面,进一步找到对应的网页内容,返回给客户端。

通俗一点讲,用户在浏览器输入网址,通过http协议发出去,网址经过DNS域名解析,解析成指定的ip地址,并在80端口上监听用户的请求。服务器监听到请求之后,会以三种方式返回给客户端:HTML、XML、JASON。

HTTP返回请求数据的三种方式:

1、以HTML代码内容返回。 

2、以XML字符串的形式返回,在以后的android开发中这种形式返回数据比较多。 

3、以JSON对象形式返回,在网络流量上考虑JSON要比XML方式要好一些,便于解析。

在Android当中,一般使用xml和Json数据解析。

三、使用HTTP协议访问网络:

Android中的WebView控件已经在后台帮我们处理好了发送HTTP请求、接收服务响应、解析返回数据,以及最终的页面展示这几步工作,不过由于它封装得太好了,反而不能直观地看出HTTP协议是如何工作的。因此接下来我们通过手动发送HTTP请求的方式,来更加深入的了解这一过程。

在Android上发送HTTP请求的方式一般有两种:HttpURLConnectionHttpCient。我们先来学习HttpCient。

四、HttpCient:

HttpClient是Apache开源组织提供的HTTP网络访问接口(一个开源的项目),从名字上就可以看出,它是一个简单的HTTP客户端(并不是浏览器),可以发送HTTP请求,接受HTTP响应。但是不会缓存服务器的响应,不能执行HTTP页面中签入嵌入的JS代码,自然也不会对页面内容进行任何解析、处理,这些都是需要开发人员来完成的。

现在Android已经成功集成了HttpClient,所以开发人员在Android项目中可以直接使用HttpClient来想Web站点提交请求以及接受响应,如果使用其他的Java项目,需要引入进相应的Jar包。HttpClient可以在官网上下载。官网链接:

HttpClient其实是一个interface类型,HttpClient封装了对象需要执行的Http请求、身份验证、连接管理和其它特性。既然HttpClient是一个接口,因此无法创建它的实例。从文档上看,HttpClient有三个已知的实现类分别是:AbstractHttpClient, AndroidHttpClient, DefaultHttpClient,会发现有一个专门为Android应用准备的实现类AndroidHttpClient,当然使用常规的DefaultHttpClient也可以实现功能。

必达财经

热点推荐

郑重声明:以上内容与金融之星立场无关。金融之星发布此内容的目的在于传播更多信息,金融之星对其观点、判断保持中立,不保证该内容(包括但不限于文字、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。相关内容不对各位读者构成任何投资建议,据此操作,风险自担。股市有风险,投资需谨慎。