Copyright (c) 2015, Chris Greenhalgh
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met...
If you think the Android project wototoplayer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
/*
* Copyright (C) 2012 The Android Open Source Project
*//www.java2s.com
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/package com.squareup.okhttp;
import com.squareup.okhttp.internal.http.RawHeaders;
importstatic com.squareup.okhttp.internal.Util.getDefaultPort;
/**
* Routing and authentication information sent to an HTTP proxy to create a
* HTTPS to an origin server. Everything in the tunnel request is sent
* unencrypted to the proxy server.
*
* <p>See <a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817, Section
* 5.2</a>.
*/publicfinalclass TunnelRequest {
final String host;
finalint port;
final String userAgent;
final String proxyAuthorization;
/**
* @param host the origin server's hostname. Not null.
* @param port the origin server's port, like 80 or 443.
* @param userAgent the client's user-agent. Not null.
* @param proxyAuthorization proxy authorization, or null if the proxy is
* used without an authorization header.
*/public TunnelRequest(String host, int port, String userAgent, String proxyAuthorization) {
if (host == null) thrownew NullPointerException("host == null");
if (userAgent == null) thrownew NullPointerException("userAgent == null");
this.host = host;
this.port = port;
this.userAgent = userAgent;
this.proxyAuthorization = proxyAuthorization;
}
/**
* If we're creating a TLS tunnel, send only the minimum set of headers.
* This avoids sending potentially sensitive data like HTTP cookies to
* the proxy unencrypted.
*/
RawHeaders getRequestHeaders() {
RawHeaders result = new RawHeaders();
result.setRequestLine("CONNECT " + host + ":" + port + " HTTP/1.1");
// Always set Host and User-Agent.
result.set("Host", port == getDefaultPort("https") ? host : (host + ":" + port));
result.set("User-Agent", userAgent);
// Copy over the Proxy-Authorization header if it exists.
if (proxyAuthorization != null) {
result.set("Proxy-Authorization", proxyAuthorization);
}
// Always set the Proxy-Connection to Keep-Alive for the benefit of
// HTTP/1.0 proxies like Squid.
result.set("Proxy-Connection", "Keep-Alive");
return result;
}
}