Skip to content

Instantly share code, notes, and snippets.

@swankjesse
Created January 30, 2015 21:12
Show Gist options
  • Select an option

  • Save swankjesse/1e79c2558e13a061e07a to your computer and use it in GitHub Desktop.

Select an option

Save swankjesse/1e79c2558e13a061e07a to your computer and use it in GitHub Desktop.
import com.squareup.okhttp.Dispatcher;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.mockwebserver.MockResponse;
import com.squareup.okhttp.mockwebserver.MockWebServer;
import java.io.IOException;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import retrofit.RestAdapter;
import retrofit.client.OkClient;
import retrofit.client.Response;
import retrofit.http.GET;
public class RetrofitInterceptTest {
private interface Service {
@GET("/get") Response get();
}
@Test public void test() throws Exception {
MockWebServer server = new MockWebServer();
server.enqueue(new MockResponse().setStatus("HTTP/1.1 200 Pizza").setBody("{}"));
server.enqueue(new MockResponse().setStatus("HTTP/1.1 200 Hamburgers").setBody("{}"));
server.play();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setDispatcher(new Dispatcher(new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60, TimeUnit.SECONDS, new SynchronousQueue<Runnable>())));
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://" + server.getHostName() + ":" + server.getPort())
.setClient(new OkClient(okHttpClient))
.build();
final Service service = restAdapter.create(Service.class);
okHttpClient.interceptors().add(new Interceptor() {
int count = 0;
@Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
if (count++ == 0) {
System.out.println(service.get().getReason());
}
return chain.proceed(chain.request());
}
});
Response response2 = service.get();
System.out.println(response2.getReason());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment