use of okhttp3.internal.http2.Header in project okhttp by square.
the class PostMultipart method run.
public void run() throws Exception {
// Use the imgur image upload API as documented at https://api.imgur.com/endpoints/image
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("title", "Square Logo").addFormDataPart("image", "logo-square.png", RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png"))).build();
Request request = new Request.Builder().header("Authorization", "Client-ID " + IMGUR_CLIENT_ID).url("https://api.imgur.com/3/image").post(requestBody).build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful())
throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
}
use of okhttp3.internal.http2.Header in project okhttp by square.
the class CallTest method get_Async.
@Test
public void get_Async() throws Exception {
server.enqueue(new MockResponse().setBody("abc").addHeader("Content-Type: text/plain"));
Request request = new Request.Builder().url(server.url("/")).header("User-Agent", "AsyncApiTest").build();
client.newCall(request).enqueue(callback);
callback.await(request.url()).assertCode(200).assertHeader("Content-Type", "text/plain").assertBody("abc");
assertEquals("AsyncApiTest", server.takeRequest().getHeader("User-Agent"));
}
use of okhttp3.internal.http2.Header in project okhttp by square.
the class CallTest method proxyConnectOmitsApplicationHeaders.
/** Test which headers are sent unencrypted to the HTTP proxy. */
@Test
public void proxyConnectOmitsApplicationHeaders() throws Exception {
server.useHttps(sslClient.socketFactory, true);
server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.UPGRADE_TO_SSL_AT_END).clearHeaders());
server.enqueue(new MockResponse().setBody("encrypted response from the origin server"));
RecordingHostnameVerifier hostnameVerifier = new RecordingHostnameVerifier();
client = client.newBuilder().sslSocketFactory(sslClient.socketFactory, sslClient.trustManager).proxy(server.toProxyAddress()).hostnameVerifier(hostnameVerifier).build();
Request request = new Request.Builder().url("https://android.com/foo").header("Private", "Secret").header("User-Agent", "App 1.0").build();
Response response = client.newCall(request).execute();
assertEquals("encrypted response from the origin server", response.body().string());
RecordedRequest connect = server.takeRequest();
assertNull(connect.getHeader("Private"));
assertEquals(Version.userAgent(), connect.getHeader("User-Agent"));
assertEquals("Keep-Alive", connect.getHeader("Proxy-Connection"));
assertEquals("android.com:443", connect.getHeader("Host"));
RecordedRequest get = server.takeRequest();
assertEquals("Secret", get.getHeader("Private"));
assertEquals("App 1.0", get.getHeader("User-Agent"));
assertEquals(Arrays.asList("verify android.com"), hostnameVerifier.calls);
}
use of okhttp3.internal.http2.Header in project okhttp by square.
the class CallTest method rangeHeaderPreventsAutomaticGzip.
@Test
public void rangeHeaderPreventsAutomaticGzip() throws Exception {
Buffer gzippedBody = gzip("abcabcabc");
// Enqueue a gzipped response. Our request isn't expecting it, but that's okay.
server.enqueue(new MockResponse().setResponseCode(HttpURLConnection.HTTP_PARTIAL).setBody(gzippedBody).addHeader("Content-Encoding: gzip").addHeader("Content-Range: bytes 0-" + (gzippedBody.size() - 1)));
// Make a range request.
Request request = new Request.Builder().url(server.url("/")).header("Range", "bytes=0-").build();
Call call = client.newCall(request);
// The response is not decompressed.
Response response = call.execute();
assertEquals("gzip", response.header("Content-Encoding"));
assertEquals(gzippedBody.snapshot(), response.body().source().readByteString());
// The request did not offer gzip support.
RecordedRequest recordedRequest = server.takeRequest();
assertNull(recordedRequest.getHeader("Accept-Encoding"));
}
use of okhttp3.internal.http2.Header in project okhttp by square.
the class CallTest method proxyAuthenticateOnConnectWithConnectionClose.
/**
* OkHttp has a bug where a `Connection: close` response header is not honored when establishing a
* TLS tunnel. https://github.com/square/okhttp/issues/2426
*/
@Test
public void proxyAuthenticateOnConnectWithConnectionClose() throws Exception {
server.useHttps(sslClient.socketFactory, true);
server.setProtocols(Collections.singletonList(Protocol.HTTP_1_1));
server.enqueue(new MockResponse().setResponseCode(407).addHeader("Proxy-Authenticate: Basic realm=\"localhost\"").addHeader("Connection: close"));
server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.UPGRADE_TO_SSL_AT_END).clearHeaders());
server.enqueue(new MockResponse().setBody("response body"));
client = client.newBuilder().sslSocketFactory(sslClient.socketFactory, sslClient.trustManager).proxy(server.toProxyAddress()).proxyAuthenticator(new RecordingOkAuthenticator("password")).hostnameVerifier(new RecordingHostnameVerifier()).build();
Request request = new Request.Builder().url("https://android.com/foo").build();
Response response = client.newCall(request).execute();
assertEquals("response body", response.body().string());
// First CONNECT call needs a new connection.
assertEquals(0, server.takeRequest().getSequenceNumber());
// Second CONNECT call needs a new connection.
assertEquals(0, server.takeRequest().getSequenceNumber());
// GET reuses the connection from the second connect.
assertEquals(1, server.takeRequest().getSequenceNumber());
}
Aggregations