标签:
在看公司的代码的时候,有遇到了okhttp里面的 response.body().contentLength()调用,有点疑问:
1.httpurlconnection里面 HttpConnection.getContentLength()是直接读的请求头的信息,所以只要是和服务器连接成功,调用这个方法是不访问网络的,那么okhttp呢? okhttp的 contentLength()是读的请求头的数据吗?还是调用的时候阻塞住,然后将服务端数据全部接受后返回收到的长度??
心里有了疑问,第一件事就是去看okhttp的源码,初略看了一下,貌似没有解决我的疑问,所以我决定自己试验一下,试验的过程就不说了,只是写了一个简单的借口,不过在写接口的时候遇到了另外一个问题, 我在servelet里面设置了setContentLength方法,但是客户端并没有这个字段,查了一会才发现我的response.setContentLength()方法写在了response.getWriter()后面,所以不生效了,呜呜~
好吧,直接给出试验的结果吧:
okhttp的response.body().contentLength()方法调用的时候没有访问网络(andriod平台在主线程访问网络会报异常),数据是来自响应头的content_length字段。
Servlet的Response.setContentLength无效
标签:
原文地址:http://www.cnblogs.com/zhangyan-2015/p/5482812.html