< prev index next >

src/java.httpclient/share/classes/java/net/http/Http1Request.java

Print this page

        

*** 28,37 **** --- 28,38 ---- import java.nio.ByteBuffer; import java.util.List; import java.util.Map; import java.util.Set; import java.net.InetSocketAddress; + import java.net.http.HttpConnection.Mode; import java.nio.charset.StandardCharsets; import java.util.function.LongConsumer; import static java.nio.charset.StandardCharsets.US_ASCII; /**
*** 46,56 **** final HttpConnection chan; // Multiple buffers are used to hold different parts of request // See line 206 and below for description final ByteBuffer[] buffers; final HttpRequest.BodyProcessor requestProc; ! final HttpHeadersImpl userHeaders, systemHeaders; final LongConsumer flowController; boolean streaming; long contentLength; Http1Request(HttpRequestImpl request, HttpConnection connection) --- 47,58 ---- final HttpConnection chan; // Multiple buffers are used to hold different parts of request // See line 206 and below for description final ByteBuffer[] buffers; final HttpRequest.BodyProcessor requestProc; ! final HttpHeaders userHeaders; ! final HttpHeadersImpl systemHeaders; final LongConsumer flowController; boolean streaming; long contentLength; Http1Request(HttpRequestImpl request, HttpConnection connection)
*** 89,102 **** buffers[1] = ByteBuffer.wrap(headers.getBytes(StandardCharsets.US_ASCII)); } private void collectHeaders1(StringBuilder sb, HttpRequestImpl request, ! HttpHeadersImpl headers) throws IOException { ! Map<String,List<String>> h = headers.directMap(); Set<Map.Entry<String,List<String>>> entries = h.entrySet(); for (Map.Entry<String,List<String>> entry : entries) { String key = entry.getKey(); sb.append(key).append(": "); --- 91,104 ---- buffers[1] = ByteBuffer.wrap(headers.getBytes(StandardCharsets.US_ASCII)); } private void collectHeaders1(StringBuilder sb, HttpRequestImpl request, ! HttpHeaders headers) throws IOException { ! Map<String,List<String>> h = headers.map(); Set<Map.Entry<String,List<String>>> entries = h.entrySet(); for (Map.Entry<String,List<String>> entry : entries) { String key = entry.getKey(); sb.append(key).append(": ");
*** 110,121 **** } sb.append("\r\n"); } } - private static final int BUFSIZE = 64 * 1024; // TODO: configurable? - private String getPathAndQuery(URI uri) { String path = uri.getPath(); String query = uri.getQuery(); if (path == null || path.equals("")) { path = "/"; --- 112,121 ----
*** 132,141 **** --- 132,160 ---- private String authorityString(InetSocketAddress addr) { return addr.getHostString() + ":" + addr.getPort(); } + private String hostString() { + URI uri = request.uri(); + int port = uri.getPort(); + String host = uri.getHost(); + + boolean defaultPort; + if (port == -1) + defaultPort = true; + else if (request.secure()) + defaultPort = port == 443; + else + defaultPort = port == 80; + + if (defaultPort) + return host; + else + return host + ":" + Integer.toString(port); + } + private String requestURI() { URI uri = request.uri(); String method = request.method(); if ((request.proxy() == null && !method.equals("CONNECT"))
*** 159,168 **** --- 178,188 ---- chan.write(buffers, 0, 2); } void sendRequest() throws IOException { collectHeaders(); + chan.configureMode(Mode.BLOCKING); if (contentLength == 0) { chan.write(buffers, 0, 2); } else if (contentLength > 0) { writeFixedContent(true); } else {
*** 194,204 **** String cmd = sb.toString(); buffers[0] = ByteBuffer.wrap(cmd.getBytes(StandardCharsets.US_ASCII)); URI uri = request.uri(); if (uri != null) { ! systemHeaders.setHeader("Host", uri.getHost()); } if (request == null) { // this is not a user request. No content contentLength = 0; } else { --- 214,224 ---- String cmd = sb.toString(); buffers[0] = ByteBuffer.wrap(cmd.getBytes(StandardCharsets.US_ASCII)); URI uri = request.uri(); if (uri != null) { ! systemHeaders.setHeader("Host", hostString()); } if (request == null) { // this is not a user request. No content contentLength = 0; } else {
< prev index next >