package org.deviceconnect.android.deviceplugin.theta.core.osc; import com.squareup.okhttp.MediaType; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.Response; import java.io.IOException; import java.util.concurrent.TimeUnit; class HttpClient { private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); private final OkHttpClient mOkHttpClient = new OkHttpClient(); public HttpClient() { mOkHttpClient.setConnectTimeout(60, TimeUnit.SECONDS); mOkHttpClient.setWriteTimeout(60, TimeUnit.SECONDS); mOkHttpClient.setReadTimeout(60, TimeUnit.SECONDS); } public HttpResponse execute(final HttpRequest request) throws IOException { switch (request.getMethod()) { case GET: return get(request); case POST: return post(request); default: throw new IllegalStateException(); } } private HttpResponse get(final HttpRequest request) throws IOException { Request call = new Request.Builder().url(request.getUri()).build(); Response response = mOkHttpClient.newCall(call).execute(); return new HttpResponse(response); } private HttpResponse post(final HttpRequest request) throws IOException { RequestBody reqBody = RequestBody.create(JSON, request.getBody()); Request call = new Request.Builder() .url(request.getUri()) .post(reqBody) .build(); Response response = mOkHttpClient.newCall(call).execute(); return new HttpResponse(response); } }