自己动手写一个HTTP请求

2018-07-02  本文已影响0人  superxcp

比如这样一个调用方法:


Image 17.png

将调用方式集成到一个getJsonString的方法里面,参数包含httpServerURL,isPost和paramMap,其中paramMap包含了公参和私参

Image 19.png
Image 20.png

这个里面有一个核心方法:getHttpURLConnection(),用这个方法得到urlConnection,然后读取结果
getHttpURLConnection()是这样写的:


Image 21.png
Image 23.png
Image 24.png
Image 25.png

解释一下这个方法:

相当于在url.openConnection()的时候就建立连接,一直保持到服务器自己的规定时间或者浏览器给服务器发送keepalive/ist的时候该状态才会断掉

至于为什么tcp会三次握手,四次握手断开,可以参考:https://blog.csdn.net/qzcsu/article/details/72861891,讲的真的是非常好。

这里稍微总结下

建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

上一篇下一篇

猜你喜欢

热点阅读