本发明涉及http请求处理技术领域,具体说是一种android上http请求失败的处理方法。http请求失败指http网络请求失败,包括但不限于http的post请求失败。
背景技术:
现有的android系统,网络请求是android客户端很重要的部分,一般是通过http网络请求进行网络连接。
http协议:超文本传输协议,对应于应用层,用于如何封装数据。
tcp/udp协议:传输控制协议,对应于传输层,主要解决数据在网络中的传输。
tcp连接包括三次握手,握手过程中并不传输数据,在握手后服务器与客户端才开始传输数据,理想状态下,tcp连接一旦建立,在通讯双方中的任何一方主动断开连接之前,tcp连接会一直保持下去。
ip协议:对应于网络层,同样解决数据在网络中的传输。
传输数据的时候只使用tcp/ip协议(传输层),如果没有应用层来识别数据内容,传输后的协议都是无用的。
应用层协议很多ftp,http,telnet等,可以自己定义应用层协议。
web使用http作传输层协议,以封装http文本信息,然后使用tcp/ip做传输层协议,将数据发送到网络上。
socket是对tcp/ip协议的封装,其只是个接口不是协议,通过socket我们才能使用tcp/ip协议,除了tcp,也可以使用udp协议来传递数据。
socket连接,至少需要一对套接字,分为clientsocket,serversocket。具体的连接过程分为3个步骤:
(1)服务器监听:服务器并不定位具体客户端套接字,而是时刻处于监听状态;
(2)客户端请求:客户端套接字要描述它要连接的服务器套接字,提供地址和端口号,然后向服务器套接字提出连接请求;
(3)连接确认:当服务器套接字收到客户端套接字发来的请求后,就响应客户端套接字的请求,并建立一个新的线程,把服务器套接字的描述发给客户端。一旦客户端确认了此描述,就正式建立连接。而服务器套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
创建socket连接的时候,可以指定传输层协议,可以是tcp或者udp,当用tcp协议则该socket就是个tcp连接,反之,当用udp协议则该socket就是个udp连接。
在android开发中,在不同的地区可能遇到一个http请求失败从而发生请求异常,这样就无法获取正确的数据,客户端就无法正常的显示,进而影响到用户的使用体验。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种android上http请求失败的处理方法,针对http请求失败进行优化,尝试获取正确的数据,而不是直接抛出(返回)请求异常,尽最大可能保证客户端的正常使用,提高用户的使用体验。
为达到以上目的,本发明采取的技术方案是:
一种android上http请求失败的处理方法,其特征在于,在出现http请求失败时,进行下述请求异常处理:
缓存http请求失败返回的请求异常信息,
根据响应失败的host和预设的ip,发送udp请求,
获取响应host的对应的tcp代理服务的ip和端口号,
基于tcp代理服务的ip和端口号,创建socket对象,
通过创建的socket对象,再次进行二次tcp连接尝试。
在上述技术方案的基础上,预设一默认的udp请求服务的ip和端口号。
在上述技术方案的基础上,通过解析url对象,获取其中记录的host。
在上述技术方案的基础上,端口号为指定的端口号。
在上述技术方案的基础上,如果二次tcp连接尝试依然出现http请求失败,则判断本次响应host的tcp代理服务,和上一次的tcp代理服务是否相同,
如果相同,则返回缓存的请求异常信息,
如果不同,则重复“基于tcp代理服务的ip和端口号、创建socket对象”的步骤一次,作为最后的tcp连接尝试。
本发明所述的android上http请求失败的处理方法,针对http请求失败进行优化,尝试获取正确的数据,而不是直接抛出(返回)请求异常,尽最大可能保证客户端的正常使用,提高用户的使用体验。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的android上http请求失败的处理方法,在出现http请求失败时,进行下述请求异常处理:
缓存http请求失败返回的请求异常信息,
根据响应失败的host和预设的ip,发送udp请求,
获取响应host的对应的tcp代理服务的ip和端口号,响应host指响应udp请求的host,
基于tcp代理服务的ip和端口号,创建socket对象,
通过创建的socket对象,再次进行二次tcp连接尝试,即再次进行基于tcp的socket链接,如果成功获取输入输出流,则可读写数据流,完成后相应关闭socket链接。
在上述技术方案的基础上,预设一默认的udp请求服务的ip和端口号。该预设用于发送udp请求时使用。
udp请求向指定的服务器发送。udp请求为简易udp请求。作为可选择的实施方案,可以为datagrampacket请求。
显然,udp请求达到目的后,需要有相应的关闭udp连接请求,不再详述。
在上述技术方案的基础上,通过解析url对象,获取其中记录的host。响应失败的host,响应host,均可按此方式获取。
在上述技术方案的基础上,端口号为指定的端口号。如有需求,可以通过指定端口号的方式,替代解析得到的端口号。
在上述技术方案的基础上,如果二次tcp连接尝试依然出现http请求失败,则判断本次响应host的tcp代理服务,和上一次的tcp代理服务是否相同,
如果相同,则返回缓存的请求异常信息,
如果不同,则重复“基于tcp代理服务的ip和端口号、创建socket对象”的步骤一次,作为最后的tcp连接尝试。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。