OKHttp3
add below to pom.xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.11.0</version>
</dependency>
java code
import java.util.concurrent.TimeUnit;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import okhttp3.OkHttpClient;
@Configuration
public class OkHttpConfig {
// strong recommend to use singleton
@Bean
public OkHttpClient okHttpClient() {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(2000, TimeUnit.MILLISECONDS)
.readTimeout(3000, TimeUnit.MILLISECONDS)
.writeTimeout(3000, TimeUnit.MILLISECONDS)
.build();
return okHttpClient;
}
}
how to use
@Autowired
private OkHttpClient okHttpClient;
@Test
public void invokeRemoteAPI() throws Exception {
String url = "http://host:port/api";
Request request = new Request.Builder().url(url).build();
Response response = okHttpClient.newCall(request).execute();
String result = response.body().string();
System.out.println(result);
}
AsyncHttpClient
add below to pom.xml
<dependency>
<groupId>com.ning</groupId>
<artifactId>async-http-client</artifactId>
<version>1.9.40</version>
</dependency>
java code
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ning.http.client.AsyncHttpClient;
import com.ning.http.client.AsyncHttpClientConfig;
@Configuration
public class AsyncHttpClientBootConfig {
@Bean
public AsyncHttpClient asyncHttpClient() {
AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder()
.setRequestTimeout(5000)
.setConnectTimeout(2000)
.setReadTimeout(3000);
return new AsyncHttpClient(builder.build());
}
}
how to use
@Autowired
private AsyncHttpClient asyncHttpClient;
@Test
public void invokeRemoteAPI() throws Exception {
String url = "http://host:port/api";
Request request = new RequestBuilder().setUrl(url).build();
Future<Response> responseFuture = asyncHttpClient.executeRequest(request);
try {
Response response = responseFuture.get();
String result = response.getResponseBody();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace(); // TODO
}
}