<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.13) on Tue Feb 08 12:40:05 CST 2022 -->
<title>HttpProxy.TunnelRequest (Eclipse Jetty API Doc - v10.0.8)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-02-08">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="HttpProxy.TunnelRequest (Eclipse Jetty API Doc - v10.0.8)";
        }
    }
    catch(err) {
    }
//-->
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/HttpProxy.TunnelRequest.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.client</a></div>
<h2 title="Class HttpProxy.TunnelRequest" class="title">Class HttpProxy.TunnelRequest</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="HttpRequest.html" title="class in org.eclipse.jetty.client">org.eclipse.jetty.client.HttpRequest</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.client.HttpProxy.TunnelRequest</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a></code></dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="HttpProxy.html" title="class in org.eclipse.jetty.client">HttpProxy</a></dd>
</dl>
<hr>
<pre>public static class <span class="typeNameLabel">HttpProxy.TunnelRequest</span>
extends <a href="HttpRequest.html" title="class in org.eclipse.jetty.client">HttpRequest</a></pre>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.client.api.Request">
<!--   -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.client.api.<a href="api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a></h3>
<code><a href="api/Request.BeginListener.html" title="interface in org.eclipse.jetty.client.api">Request.BeginListener</a>, <a href="api/Request.CommitListener.html" title="interface in org.eclipse.jetty.client.api">Request.CommitListener</a>, <a href="api/Request.Content.html" title="interface in org.eclipse.jetty.client.api">Request.Content</a>, <a href="api/Request.ContentListener.html" title="interface in org.eclipse.jetty.client.api">Request.ContentListener</a>, <a href="api/Request.FailureListener.html" title="interface in org.eclipse.jetty.client.api">Request.FailureListener</a>, <a href="api/Request.HeadersListener.html" title="interface in org.eclipse.jetty.client.api">Request.HeadersListener</a>, <a href="api/Request.Listener.html" title="interface in org.eclipse.jetty.client.api">Request.Listener</a>, <a href="api/Request.QueuedListener.html" title="interface in org.eclipse.jetty.client.api">Request.QueuedListener</a>, <a href="api/Request.RequestListener.html" title="interface in org.eclipse.jetty.client.api">Request.RequestListener</a>, <a href="api/Request.SuccessListener.html" title="interface in org.eclipse.jetty.client.api">Request.SuccessListener</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.client.HttpRequest">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.client.<a href="HttpRequest.html" title="class in org.eclipse.jetty.client">HttpRequest</a></h3>
<code><a href="HttpRequest.html#abort(java.lang.Throwable)">abort</a>, <a href="HttpRequest.html#accept(java.lang.String...)">accept</a>, <a href="HttpRequest.html#addHeader(org.eclipse.jetty.http.HttpField)">addHeader</a>, <a href="HttpRequest.html#agent(java.lang.String)">agent</a>, <a href="HttpRequest.html#attribute(java.lang.String,java.lang.Object)">attribute</a>, <a href="HttpRequest.html#body(org.eclipse.jetty.client.api.Request.Content)">body</a>, <a href="HttpRequest.html#content(org.eclipse.jetty.client.api.ContentProvider)">content</a>, <a href="HttpRequest.html#content(org.eclipse.jetty.client.api.ContentProvider,java.lang.String)">content</a>, <a href="HttpRequest.html#cookie(java.net.HttpCookie)">cookie</a>, <a href="HttpRequest.html#file(java.nio.file.Path)">file</a>, <a href="HttpRequest.html#file(java.nio.file.Path,java.lang.String)">file</a>, <a href="HttpRequest.html#followRedirects(boolean)">followRedirects</a>, <a href="HttpRequest.html#getAbortCause()">getAbortCause</a>, <a href="HttpRequest.html#getAgent()">getAgent</a>, <a href="HttpRequest.html#getAttributes()">getAttributes</a>, <a href="HttpRequest.html#getBody()">getBody</a>, <a href="HttpRequest.html#getContent()">getContent</a>, <a href="HttpRequest.html#getConversation()">getConversation</a>, <a href="HttpRequest.html#getCookies()">getCookies</a>, <a href="HttpRequest.html#getHeaders()">getHeaders</a>, <a href="HttpRequest.html#getHost()">getHost</a>, <a href="HttpRequest.html#getIdleTimeout()">getIdleTimeout</a>, <a href="HttpRequest.html#getMethod()">getMethod</a>, <a href="HttpRequest.html#getParams()">getParams</a>, <a href="HttpRequest.html#getPath()">getPath</a>, <a href="HttpRequest.html#getPort()">getPort</a>, <a href="HttpRequest.html#getPushListener()">getPushListener</a>, <a href="HttpRequest.html#getQuery()">getQuery</a>, <a href="HttpRequest.html#getRequestListeners(java.lang.Class)">getRequestListeners</a>, <a href="HttpRequest.html#getResponseListeners()">getResponseListeners</a>, <a href="HttpRequest.html#getScheme()">getScheme</a>, <a href="HttpRequest.html#getTag()">getTag</a>, <a href="HttpRequest.html#getTimeout()">getTimeout</a>, <a href="HttpRequest.html#getTrailers()">getTrailers</a>, <a href="HttpRequest.html#getUpgradeProtocol()">getUpgradeProtocol</a>, <a href="HttpRequest.html#getURI()">getURI</a>, <a href="HttpRequest.html#getVersion()">getVersion</a>, <a href="HttpRequest.html#header(java.lang.String,java.lang.String)">header</a>, <a href="HttpRequest.html#header(org.eclipse.jetty.http.HttpHeader,java.lang.String)">header</a>, <a href="HttpRequest.html#headers(java.util.function.Consumer)">headers</a>, <a href="HttpRequest.html#host(java.lang.String)">host</a>, <a href="HttpRequest.html#idleTimeout(long,java.util.concurrent.TimeUnit)">idleTimeout</a>, <a href="HttpRequest.html#isFollowRedirects()">isFollowRedirects</a>, <a href="HttpRequest.html#isVersionExplicit()">isVersionExplicit</a>, <a href="HttpRequest.html#listener(org.eclipse.jetty.client.api.Request.Listener)">listener</a>, <a href="HttpRequest.html#method(java.lang.String)">method</a>, <a href="HttpRequest.html#method(org.eclipse.jetty.http.HttpMethod)">method</a>, <a href="HttpRequest.html#onComplete(org.eclipse.jetty.client.api.Response.CompleteListener)">onComplete</a>, <a href="HttpRequest.html#onRequestBegin(org.eclipse.jetty.client.api.Request.BeginListener)">onRequestBegin</a>, <a href="HttpRequest.html#onRequestCommit(org.eclipse.jetty.client.api.Request.CommitListener)">onRequestCommit</a>, <a href="HttpRequest.html#onRequestContent(org.eclipse.jetty.client.api.Request.ContentListener)">onRequestContent</a>, <a href="HttpRequest.html#onRequestFailure(org.eclipse.jetty.client.api.Request.FailureListener)">onRequestFailure</a>, <a href="HttpRequest.html#onRequestHeaders(org.eclipse.jetty.client.api.Request.HeadersListener)">onRequestHeaders</a>, <a href="HttpRequest.html#onRequestQueued(org.eclipse.jetty.client.api.Request.QueuedListener)">onRequestQueued</a>, <a href="HttpRequest.html#onRequestSuccess(org.eclipse.jetty.client.api.Request.SuccessListener)">onRequestSuccess</a>, <a href="HttpRequest.html#onResponseBegin(org.eclipse.jetty.client.api.Response.BeginListener)">onResponseBegin</a>, <a href="HttpRequest.html#onResponseContent(org.eclipse.jetty.client.api.Response.ContentListener)">onResponseContent</a>, <a href="HttpRequest.html#onResponseContentAsync(org.eclipse.jetty.client.api.Response.AsyncContentListener)">onResponseContentAsync</a>, <a href="HttpRequest.html#onResponseContentDemanded(org.eclipse.jetty.client.api.Response.DemandedContentListener)">onResponseContentDemanded</a>, <a href="HttpRequest.html#onResponseFailure(org.eclipse.jetty.client.api.Response.FailureListener)">onResponseFailure</a>, <a href="HttpRequest.html#onResponseHeader(org.eclipse.jetty.client.api.Response.HeaderListener)">onResponseHeader</a>, <a href="HttpRequest.html#onResponseHeaders(org.eclipse.jetty.client.api.Response.HeadersListener)">onResponseHeaders</a>, <a href="HttpRequest.html#onResponseSuccess(org.eclipse.jetty.client.api.Response.SuccessListener)">onResponseSuccess</a>, <a href="HttpRequest.html#param(java.lang.String,java.lang.String)">param</a>, <a href="HttpRequest.html#path(java.lang.String)">path</a>, <a href="HttpRequest.html#port(int)">port</a>, <a href="HttpRequest.html#pushListener(java.util.function.BiFunction)">pushListener</a>, <a href="HttpRequest.html#scheme(java.lang.String)">scheme</a>, <a href="HttpRequest.html#send()">send</a>, <a href="HttpRequest.html#send(org.eclipse.jetty.client.api.Response.CompleteListener)">send</a>, <a href="HttpRequest.html#tag(java.lang.Object)">tag</a>, <a href="HttpRequest.html#timeout(long,java.util.concurrent.TimeUnit)">timeout</a>, <a href="HttpRequest.html#toString()">toString</a>, <a href="HttpRequest.html#trailers(java.util.function.Supplier)">trailers</a>, <a href="HttpRequest.html#upgradeProtocol(java.lang.String)">upgradeProtocol</a>, <a href="HttpRequest.html#version(org.eclipse.jetty.http.HttpVersion)">version</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/HttpProxy.TunnelRequest.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2022 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
