private Request networkRequest(Request request) { com.squareup.okhttp.Request.Builder builder = request.newBuilder(); if (request.header("Host") == null) { builder.header("Host", Util.hostHeader(request.httpUrl())); } if ((connection == null || connection.getProtocol() != Protocol.HTTP_1_0) && request.header("Connection") == null) { builder.header("Connection", "Keep-Alive"); } if (request.header("Accept-Encoding") == null) { transparentGzip = true; builder.header("Accept-Encoding", "gzip"); } CookieHandler cookiehandler = client.getCookieHandler(); if (cookiehandler != null) { java.util.Map map = OkHeaders.toMultimap(builder.build().headers(), null); OkHeaders.addCookies(builder, cookiehandler.get(request.uri(), map)); } if (request.header("User-Agent") == null) { builder.header("User-Agent", Version.userAgent()); } return builder.build(); }
@Override public final Map<String, List<String>> getHeaderFields() { try { Response response = getResponse().getResponse(); return OkHeaders.toMultimap(response.headers(), response.statusLine()); } catch (IOException e) { return Collections.emptyMap(); } }
@Override public final Map<String, List<String>> getRequestProperties() { if (connected) { throw new IllegalStateException( "Cannot access request header fields after connection is set"); } // For the request line property assigned to the null key, just use no proxy and HTTP 1.1. Request request = new Request.Builder().url(getURL()).method(method, null).build(); String requestLine = RequestLine.get(request, null, 1); return OkHeaders.toMultimap(requestHeaders.build(), requestLine); }
private static Headers combine(Headers headers, Headers headers1) { boolean flag = false; com.squareup.okhttp.Headers.Builder builder = new com.squareup.okhttp.Headers.Builder(); int k = headers.size(); int j = 0; do { if (j >= k) { break; } String s = headers.name(j); String s1 = headers.value(j); if ((!"Warning".equalsIgnoreCase(s) || !s1.startsWith("1")) && (!OkHeaders.isEndToEnd(s) || headers1.get(s) == null)) { builder.add(s, s1); } j++; } while (true); k = headers1.size(); j = ((flag) ? 1 : 0); do { if (j >= k) { break; } headers = headers1.name(j); if (!"Content-Length".equalsIgnoreCase(headers) && OkHeaders.isEndToEnd(headers)) { builder.add(headers, headers1.value(j)); } j++; } while (true); return builder.build(); }
public static boolean hasBody(Response response) { if (!response.request().method().equals("HEAD")) { int j = response.code(); if ((j < 100 || j >= 200) && j != 204 && j != 304) { return true; } if (OkHeaders.contentLength(response) != -1L || "chunked".equalsIgnoreCase(response.header("Transfer-Encoding"))) { return true; } } return false; }
private Source getTransferStream(Response response) throws IOException { if (!HttpEngine.hasBody(response)) { return httpConnection.newFixedLengthSource(0); } if ("chunked".equalsIgnoreCase(response.header("Transfer-Encoding"))) { return httpConnection.newChunkedSource(httpEngine); } long contentLength = OkHeaders.contentLength(response); if (contentLength != -1) { return httpConnection.newFixedLengthSource(contentLength); } // Wrap the input stream from the connection (rather than just returning // "socketIn" directly here), so that we can control its use after the // reference escapes. return httpConnection.newUnknownLengthSource(); }