Http协议+java httpURLConnetion实现远程读取文件+chrome DEBUG Timing

参考:

1.http://blog.csdn.net/gueter/article/details/1524447       http协议

2.http://blog.csdn.net/gueter/article/details/1524447       http协议

3.http://www.cnblogs.com/weekend001/p/3796939.html       Chrome DEBUG network 的Timing说明

HTTP 基于请求(request)与响应(response)的无状态无连接协议,一次请求一个连接,响应完毕,则断开http连接

HTTP定义的事务处理由以下四步组成:
1.建立连接
2.客户端发送HTTP请求头
3.服务器端响应生成结果 回发
4.服务器端关闭连接,客户端解析回发响应头,恢复页面

举例子进行流程梳理
请求:http://write.blog.csdn.net/postedit/test.txt
1、建立连接(http三次握手建立客户端服务器连接)
本机 请求 连接 write.blog.csdn.net:80(为空默认为80)
chrome Debug Timing : Proxy、DNS LoopUp、Blocking(浏览器发请求前本地的操作时间,比如去缓存中查看页面缓存等)
java 代码:
<pre name="code" class="java" style="font-size: 14px; line-height: 26px;">//URL方法,创建HttpURLConnection对象
 
 
httpURLConnection = (HttpURLConnection) url.openConnection();
//设置url连接超时时间
httpURLConnection.setConnectTimeout(5000);//httpURLConnection方法

//设置HTTP请求方式
httpURLConnection.setRequestMethod("GET");//httpURLConnection方法

//打开输入流
httpURLConnection.setDoInput(true);//URL方法,httpURLConnection继承,开打输入流

2. 客户端发送HTTP请求头((TCP三次握手建立客户端服务器数据传输连接)
发送请求内容并传递响应参数 如 GET或POST  传递的参数  Accept Content_length Content_type User_Agent Expire(expire Time 多少时间过期,控制浏览器是否页面缓存等)等
本机请求: GET /postedit/test.txt HTTP1.0
chrome Debug Timing : Connecting(建立TCP连接的时间,就相当于客户端从发请求开始到TCP握手结束这一段,包括DNS查询+Proxy时间+TCP握手时间。),Sending(发送请求时间,这个时间一般很小,当然如果POST请求,请求体比较大,那么这个时间段就会比较长了。)
java代码:
httpURLConnection.connect();//调用connect方法,建立tcp连接

3.服务器响应生成结果回发
服务器端接受请求,按照请求里的方式处理数据后生成响应返回数据到客户端 (本机)
chrome Debug Timing :waiting(发送请求完毕到接收请求开始的时间,这个时间段就代表服务器处理和返回数据网络延时时间了,服务器优化的目的就是要让这个时间段尽可能短)
java代码 如查询数据库处理数据等

4.服务器端关闭连接,客户端(本机)解析回发相应头,恢复页面
1)浏览器先解析状态行,查看请求是否成功的状态代码--HTTP响应码:404 400 200 ....
2) 解析 每一个响应头标 如
ContentType: text/html;charset=gb2312                                                                                               Content-Length: 122 ---响应中的字节数,只在浏览器使用永久(Keep-alive)HTTP连接时需要。
3) 读取响应数据HTML,根据它的语法标签<html></html>等和内容恢复标准的HTML格式页面或者其它。
4)一个HTML 文档可能包含其它的需要被载入的资源,浏览器会识别,并对这些资源再进行额外的请求,这个过程可以一直循环到所有的数据都按照响应头标中规定的格式恢复到页面中。
5)数据传送完毕,服务器端关闭连接,即无状态协议。
chrome Debug Timing:receiving(接收数据时间,返回数据比较大,接收时间比较大)
java代码

// 返回状态码 200ok
if(httpURLConnection.getResponseCode() == 200){
<span style="white-space:pre">	</span>//从服务器获得一个输入流
<span style="white-space:pre">	</span>inputStream = httpURLConnection.getInputStream();
	br = new BufferedReader(new InputStreamReader(inputStream));
	String i = "";
	while((i = br.readLine()) != null){
	<span style="white-space:pre">	</span>result += i;
	}
}








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值