首先,chain.proceed() 执行前,对 请求添加了header:"Content-Type"、"Content-Length" 或 "Transfer-Encoding"、"Host"、"Connection"、"Accept-Encoding"、"Cookie"、"User-Agent",即网络层真正可执行的请求。其中,注意到,默认是没有cookie处理的,需要我们在初始化OkhttpClient时配置我们自己的cookieJar。 chain....
body().contentLength()); BufferedSink bufferedRequestBody = Okio.buffer(requestBodyOut); request.body().writeTo(bufferedRequestBody); bufferedRequestBody.close(); } else if (!connection.isMultiplexed()) { // If the "Expect: 100-continue" expectation wasn't met, prevent the HTTP/1 ...
多块请求体中每块请求都是一个请求体,可以定义自己的请求头。这些请求头可以用来描述这块请求,例如他的Content-Disposition。如果Content-Length和Content-Type可用的话,他们会被自动添加到请求头中。 privatestaticfinalStringIMGUR_CLIENT_ID="...";privatestaticfinalMediaTypeMEDIA_TYPE_PNG=MediaType.parse("image/pn...
MediaType contentType = body.contentType(); if (contentType != null) { requestBuilder.header("Content-Type", contentType.toString()); } long contentLength = body.contentLength(); //如果已经知道body的长度,就添加头部"Content-Length" if (contentLength != -1) { requestBuilder.header("Content...
(retryAndFollowUpInterceptor);// 桥拦截器,添加一些Header和移除一些header,例如body的contentLength是-1,则移除Content-Length这个headerinterceptors.add(newBridgeInterceptor(client.cookieJar()));// 负责读取缓存直接返回、更新缓存interceptors.add(newCacheInterceptor(client.internalCache()));// 负责和服务器建立...
requestBuilder.header("Content-Type", contentType.toString()); } long contentLength = body.contentLength(); if (contentLength != -1) { requestBuilder.header("Content-Length", Long.toString(contentLength)); requestBuilder.removeHeader("Transfer-Encoding"); ...
body().contentLength()); } return response; } 这是链中最后一个拦截器,它向 服务器 发起了一次网络访问.负责向服务器发送请求数据、从服务器读取响应数据.拿到数据之后再沿着链返回. 4. 总结 OkHttp的拦截器链设计得非常巧妙,是典型的责任链模式.并最终由最后一个链处理了网络请求,并拿到结果.本文主要是对...
long contentLength = body.contentLength(); if (contentLength != -1) { requestBuilder.header("Content-Length", Long.toString(contentLength)); requestBuilder.removeHeader("Transfer-Encoding"); } else { requestBuilder.header("Transfer-Encoding", "chunked"); ...
public long contentLength() { try { return mDelegate.contentLength(); } catch (IOException e) { e.printStackTrace(); } return -1; } 代码示例来源:origin: jeasonlzy/okhttp-OkGo /** 重写调用实际的响应体的contentLength */ @Override public long contentLength() { try { return requestBody....
requestBuilder.header("Content-Type", contentType.toString()); }longcontentLength =body.contentLength();if(contentLength != -1) { requestBuilder.header("Content-Length", Long.toString(contentLength)); requestBuilder.removeHeader("Transfer-Encoding"); ...