Merge pull request #749 from ivanp81/master

Move OkHttp examples to spring-rest
This commit is contained in:
Jim Kerak 2016-10-15 14:04:48 -04:00 committed by GitHub
commit 67b3d62b91
14 changed files with 152 additions and 185 deletions

View File

@ -1,44 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.baeldung.okhttp</groupId>
<artifactId>okhttp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${com.squareup.okhttp3.version}</version>
</dependency>
<!-- test scoped -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>${org.hamcrest.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<!-- okhttp -->
<com.squareup.okhttp3.version>3.4.1</com.squareup.okhttp3.version>
<!-- testing -->
<org.hamcrest.version>1.3</org.hamcrest.version>
<junit.version>4.12</junit.version>
</properties>
</project>

View File

@ -1,113 +0,0 @@
package org.baeldung.okhttp;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpMiscTest {
private static final String BASE_URL = "http://localhost:8080/spring-rest";
//@Test
public void whenSetRequestTimeoutUsingOkHttp_thenFail() throws IOException {
OkHttpClient client = new OkHttpClient.Builder()
//.connectTimeout(10, TimeUnit.SECONDS)
//.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(1, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay.
.build();
Call call = client.newCall(request);
Response response = call.execute();
response.close();
}
//@Test
public void whenCancelRequestUsingOkHttp_thenCorrect() throws IOException {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay.
.build();
final int seconds = 1;
//final int seconds = 3;
final long startNanos = System.nanoTime();
final Call call = client.newCall(request);
// Schedule a job to cancel the call in 1 second.
executor.schedule(new Runnable() {
public void run() {
System.out.printf("%.2f Canceling call.%n", (System.nanoTime() - startNanos) / 1e9f);
call.cancel();
System.out.printf("%.2f Canceled call.%n", (System.nanoTime() - startNanos) / 1e9f);
}
}, seconds, TimeUnit.SECONDS);
try {
System.out.printf("%.2f Executing call.%n", (System.nanoTime() - startNanos) / 1e9f);
Response response = call.execute();
System.out.printf("%.2f Call was expected to fail, but completed: %s%n", (System.nanoTime() - startNanos) / 1e9f, response);
} catch (IOException e) {
System.out.printf("%.2f Call failed as expected: %s%n", (System.nanoTime() - startNanos) / 1e9f, e);
}
}
@Test
public void whenSetResponseCacheUsingOkHttp_thenCorrect() throws IOException {
int cacheSize = 10 * 1024 * 1024; // 10 MiB
File cacheDirectory = new File("src/test/resources/cache");
Cache cache = new Cache(cacheDirectory, cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
//.cacheControl(CacheControl.FORCE_NETWORK)
//.cacheControl(CacheControl.FORCE_CACHE)
.build();
Response response1 = client.newCall(request).execute();
String responseBody1 = response1.body().string();
System.out.println("Response 1 response: " + response1);
System.out.println("Response 1 cache response: " + response1.cacheResponse());
System.out.println("Response 1 network response: " + response1.networkResponse());
System.out.println("Response 1 responseBody: " + responseBody1);
Response response2 = client.newCall(request).execute();
String responseBody2 = response2.body().string();
System.out.println("Response 2 response: " + response2);
System.out.println("Response 2 cache response: " + response2.cacheResponse());
System.out.println("Response 2 network response: " + response2.networkResponse());
System.out.println("Response 2 responseBody: " + responseBody2);
}
}

View File

@ -68,7 +68,6 @@
<module>rest-assured</module> <module>rest-assured</module>
<module>rest-testing</module> <module>rest-testing</module>
<module>resteasy</module> <module>resteasy</module>
<module>okhttp</module>
<module>spring-all</module> <module>spring-all</module>
<module>spring-akka</module> <module>spring-akka</module>

View File

@ -10,3 +10,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Http Message Converters with the Spring Framework](http://www.baeldung.com/spring-httpmessageconverter-rest) - [Http Message Converters with the Spring Framework](http://www.baeldung.com/spring-httpmessageconverter-rest)
- [Redirect in Spring](http://www.baeldung.com/spring-redirect-and-forward) - [Redirect in Spring](http://www.baeldung.com/spring-redirect-and-forward)
- [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code) - [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code)
- [A Guide to OkHttp](http://www.baeldung.com/guide-to-okhttp)

View File

@ -118,6 +118,14 @@
<artifactId>log4j-over-slf4j</artifactId> <artifactId>log4j-over-slf4j</artifactId>
</dependency> </dependency>
<!-- okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${com.squareup.okhttp3.version}</version>
</dependency>
<!-- test scoped --> <!-- test scoped -->
<dependency> <dependency>
@ -320,6 +328,9 @@
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version> <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
<cargo-maven2-plugin.version>1.6.0</cargo-maven2-plugin.version> <cargo-maven2-plugin.version>1.6.0</cargo-maven2-plugin.version>
<!-- okhttp -->
<com.squareup.okhttp3.version>3.4.1</com.squareup.okhttp3.version>
</properties> </properties>
</project> </project>

View File

@ -18,12 +18,12 @@ import okhttp3.Request;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okhttp3.Response; import okhttp3.Response;
public class OkHttpFileUploadingTest { public class OkHttpFileUploadingLiveTest {
private static final String BASE_URL = "http://localhost:8080/spring-rest"; private static final String BASE_URL = "http://localhost:8080/spring-rest";
@Test @Test
public void whenUploadFileUsingOkHttp_thenCorrect() throws IOException { public void whenUploadFile_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
@ -45,7 +45,7 @@ public class OkHttpFileUploadingTest {
} }
@Test @Test
public void whenGetUploadFileProgressUsingOkHttp_thenCorrect() throws IOException { public void whenGetUploadFileProgress_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();

View File

@ -14,12 +14,12 @@ import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
public class OkHttpGetTest { public class OkHttpGetLiveTest {
private static final String BASE_URL = "http://localhost:8080/spring-rest"; private static final String BASE_URL = "http://localhost:8080/spring-rest";
@Test @Test
public void whenGetRequestUsingOkHttp_thenCorrect() throws IOException { public void whenGetRequest_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
@ -34,7 +34,7 @@ public class OkHttpGetTest {
} }
@Test @Test
public void whenGetRequestWithQueryParameterUsingOkHttp_thenCorrect() throws IOException { public void whenGetRequestWithQueryParameter_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
@ -54,7 +54,7 @@ public class OkHttpGetTest {
} }
@Test @Test
public void whenAsynchronousGetRequestUsingOkHttp_thenCorrect() { public void whenAsynchronousGetRequest_thenCorrect() {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();

View File

@ -9,12 +9,12 @@ import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
public class OkHttpHeaderTest { public class OkHttpHeaderLiveTest {
private static final String SAMPLE_URL = "http://www.github.com"; private static final String SAMPLE_URL = "http://www.github.com";
@Test @Test
public void whenSetHeaderUsingOkHttp_thenCorrect() throws IOException { public void whenSetHeader_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
@ -29,7 +29,7 @@ public class OkHttpHeaderTest {
} }
@Test @Test
public void whenSetDefaultHeaderUsingOkHttp_thenCorrect() throws IOException { public void whenSetDefaultHeader_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient.Builder() OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new DefaultContentTypeInterceptor("application/json")) .addInterceptor(new DefaultContentTypeInterceptor("application/json"))

View File

@ -0,0 +1,107 @@
package org.baeldung.okhttp;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpMiscLiveTest {
private static final String BASE_URL = "http://localhost:8080/spring-rest";
private static Logger logger = LoggerFactory.getLogger(OkHttpMiscLiveTest.class);
@Test
public void whenSetRequestTimeout_thenFail() throws IOException {
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(1, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay.
.build();
Call call = client.newCall(request);
Response response = call.execute();
response.close();
}
@Test
public void whenCancelRequest_thenCorrect() throws IOException {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay.
.build();
final int seconds = 1;
final long startNanos = System.nanoTime();
final Call call = client.newCall(request);
// Schedule a job to cancel the call in 1 second.
executor.schedule(new Runnable() {
public void run() {
logger.debug("Canceling call: " + (System.nanoTime() - startNanos) / 1e9f);
call.cancel();
logger.debug("Canceled call: " + (System.nanoTime() - startNanos) / 1e9f);
}
}, seconds, TimeUnit.SECONDS);
try {
logger.debug("Executing call: " + (System.nanoTime() - startNanos) / 1e9f);
Response response = call.execute();
logger.debug("Call was expected to fail, but completed: " + (System.nanoTime() - startNanos) / 1e9f, response);
} catch (IOException e) {
logger.debug("Call failed as expected: " + (System.nanoTime() - startNanos) / 1e9f, e);
}
}
@Test
public void whenSetResponseCache_thenCorrect() throws IOException {
int cacheSize = 10 * 1024 * 1024; // 10 MiB
File cacheDirectory = new File("src/test/resources/cache");
Cache cache = new Cache(cacheDirectory, cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
Response response1 = client.newCall(request).execute();
logResponse(response1);
Response response2 = client.newCall(request).execute();
logResponse(response2);
}
private void logResponse(Response response) throws IOException {
logger.debug("Response response: " + response);
logger.debug("Response cache response: " + response.cacheResponse());
logger.debug("Response network response: " + response.networkResponse());
logger.debug("Response responseBody: " + response.body().string());
}
}

View File

@ -18,13 +18,13 @@ import okhttp3.Request;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okhttp3.Response; import okhttp3.Response;
public class OkHttpPostingTest { public class OkHttpPostingLiveTest {
private static final String BASE_URL = "http://localhost:8080/spring-rest"; private static final String BASE_URL = "http://localhost:8080/spring-rest";
private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php"; private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php";
@Test @Test
public void whenSendPostRequestUsingOkHttp_thenCorrect() throws IOException { public void whenSendPostRequest_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
@ -45,7 +45,7 @@ public class OkHttpPostingTest {
} }
@Test @Test
public void whenSendPostRequestWithAuthorizationUsingOkHttp_thenCorrect() throws IOException { public void whenSendPostRequestWithAuthorization_thenCorrect() throws IOException {
String postBody = "test post"; String postBody = "test post";
@ -64,7 +64,7 @@ public class OkHttpPostingTest {
} }
@Test @Test
public void whenPostJsonUsingOkHttp_thenCorrect() throws IOException { public void whenPostJson_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();
@ -84,7 +84,7 @@ public class OkHttpPostingTest {
} }
@Test @Test
public void whenSendMultipartRequestUsingOkHttp_thenCorrect() throws IOException { public void whenSendMultipartRequest_thenCorrect() throws IOException {
OkHttpClient client = new OkHttpClient(); OkHttpClient client = new OkHttpClient();

View File

@ -12,10 +12,10 @@ import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
public class OkHttpRedirectTest { public class OkHttpRedirectLiveTest {
@Test @Test
public void whenSetFollowRedirectsUsingOkHttp_thenNotRedirected() throws IOException { public void whenSetFollowRedirects_thenNotRedirected() throws IOException {
OkHttpClient client = new OkHttpClient().newBuilder() OkHttpClient client = new OkHttpClient().newBuilder()
.followRedirects(false) .followRedirects(false)

View File

@ -1,11 +1,16 @@
package org.baeldung.okhttp; package org.baeldung.okhttp;
import okhttp3.MediaType;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okio.*; import okhttp3.MediaType;
import java.io.IOException; import java.io.IOException;
import okio.Buffer;
import okio.BufferedSink;
import okio.ForwardingSink;
import okio.Okio;
import okio.Sink;
public class ProgressRequestWrapper extends RequestBody { public class ProgressRequestWrapper extends RequestBody {
protected RequestBody delegate; protected RequestBody delegate;
@ -61,6 +66,7 @@ public class ProgressRequestWrapper extends RequestBody {
} }
public interface ProgressListener { public interface ProgressListener {
void onRequestProgress(long bytesWritten, long contentLength); void onRequestProgress(long bytesWritten, long contentLength);
} }