Search in sources :

Example 26 with Retrofit

use of retrofit2.Retrofit in project retrofit by square.

the class RetrofitTest method methodAnnotationsPassedToResponseBodyConverter.

@Test
public void methodAnnotationsPassedToResponseBodyConverter() {
    final AtomicReference<Annotation[]> annotationsRef = new AtomicReference<>();
    class MyConverterFactory extends Converter.Factory {

        @Override
        public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
            annotationsRef.set(annotations);
            return new ToStringConverterFactory().responseBodyConverter(type, annotations, retrofit);
        }
    }
    Retrofit retrofit = new Retrofit.Builder().baseUrl(server.url("/")).addConverterFactory(new MyConverterFactory()).build();
    Annotated annotated = retrofit.create(Annotated.class);
    // Trigger internal setup.
    annotated.method();
    Annotation[] annotations = annotationsRef.get();
    assertThat(annotations).hasAtLeastOneElementOfType(Annotated.Foo.class);
}
Also used : MediaType(okhttp3.MediaType) ParameterizedType(java.lang.reflect.ParameterizedType) Type(java.lang.reflect.Type) ToStringConverterFactory(retrofit2.helpers.ToStringConverterFactory) NonMatchingCallAdapterFactory(retrofit2.helpers.NonMatchingCallAdapterFactory) DelegatingCallAdapterFactory(retrofit2.helpers.DelegatingCallAdapterFactory) NonMatchingConverterFactory(retrofit2.helpers.NonMatchingConverterFactory) AtomicReference(java.util.concurrent.atomic.AtomicReference) ToStringConverterFactory(retrofit2.helpers.ToStringConverterFactory) Annotation(java.lang.annotation.Annotation) ResponseBody(okhttp3.ResponseBody) Test(org.junit.Test)

Example 27 with Retrofit

use of retrofit2.Retrofit in project retrofit by square.

the class RetrofitTest method callCallCustomAdapter.

@Test
public void callCallCustomAdapter() {
    final AtomicBoolean factoryCalled = new AtomicBoolean();
    final AtomicBoolean adapterCalled = new AtomicBoolean();
    class MyCallAdapterFactory extends CallAdapter.Factory {

        @Override
        public CallAdapter<?, ?> get(final Type returnType, Annotation[] annotations, Retrofit retrofit) {
            factoryCalled.set(true);
            if (getRawType(returnType) != Call.class) {
                return null;
            }
            return new CallAdapter<Object, Call<?>>() {

                @Override
                public Type responseType() {
                    return getParameterUpperBound(0, (ParameterizedType) returnType);
                }

                @Override
                public Call<Object> adapt(Call<Object> call) {
                    adapterCalled.set(true);
                    return call;
                }
            };
        }
    }
    Retrofit retrofit = new Retrofit.Builder().baseUrl(server.url("/")).addCallAdapterFactory(new MyCallAdapterFactory()).build();
    CallMethod example = retrofit.create(CallMethod.class);
    assertThat(example.getResponseBody()).isNotNull();
    assertThat(factoryCalled.get()).isTrue();
    assertThat(adapterCalled.get()).isTrue();
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) MediaType(okhttp3.MediaType) ParameterizedType(java.lang.reflect.ParameterizedType) Type(java.lang.reflect.Type) ToStringConverterFactory(retrofit2.helpers.ToStringConverterFactory) NonMatchingCallAdapterFactory(retrofit2.helpers.NonMatchingCallAdapterFactory) DelegatingCallAdapterFactory(retrofit2.helpers.DelegatingCallAdapterFactory) NonMatchingConverterFactory(retrofit2.helpers.NonMatchingConverterFactory) Test(org.junit.Test)

Example 28 with Retrofit

use of retrofit2.Retrofit in project retrofit by square.

the class ErrorHandlingAdapter method main.

public static void main(String... args) {
    Retrofit retrofit = new Retrofit.Builder().baseUrl("http://httpbin.org").addCallAdapterFactory(new ErrorHandlingCallAdapterFactory()).addConverterFactory(GsonConverterFactory.create()).build();
    HttpBinService service = retrofit.create(HttpBinService.class);
    MyCall<Ip> ip = service.getIp();
    ip.enqueue(new MyCallback<Ip>() {

        @Override
        public void success(Response<Ip> response) {
            System.out.println("SUCCESS! " + response.body().origin);
        }

        @Override
        public void unauthenticated(Response<?> response) {
            System.out.println("UNAUTHENTICATED");
        }

        @Override
        public void clientError(Response<?> response) {
            System.out.println("CLIENT ERROR " + response.code() + " " + response.message());
        }

        @Override
        public void serverError(Response<?> response) {
            System.out.println("SERVER ERROR " + response.code() + " " + response.message());
        }

        @Override
        public void networkError(IOException e) {
            System.err.println("NETOWRK ERROR " + e.getMessage());
        }

        @Override
        public void unexpectedError(Throwable t) {
            System.err.println("FATAL ERROR " + t.getMessage());
        }
    });
}
Also used : Retrofit(retrofit2.Retrofit) IOException(java.io.IOException)

Example 29 with Retrofit

use of retrofit2.Retrofit in project retrofit by square.

the class JsonAndXmlConverters method main.

public static void main(String... args) throws IOException {
    MockWebServer server = new MockWebServer();
    server.start();
    server.enqueue(new MockResponse().setBody("{\"name\": \"Jason\"}"));
    server.enqueue(new MockResponse().setBody("<user name=\"Eximel\"/>"));
    Retrofit retrofit = new Retrofit.Builder().baseUrl(server.url("/")).addConverterFactory(new QualifiedTypeConverterFactory(GsonConverterFactory.create(), SimpleXmlConverterFactory.create())).build();
    Service service = retrofit.create(Service.class);
    User user1 = service.exampleJson().execute().body();
    System.out.println("User 1: " + user1.name);
    User user2 = service.exampleXml().execute().body();
    System.out.println("User 2: " + user2.name);
    server.shutdown();
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) Retrofit(retrofit2.Retrofit) MockWebServer(okhttp3.mockwebserver.MockWebServer)

Example 30 with Retrofit

use of retrofit2.Retrofit in project retrofit by square.

the class JsonQueryParameters method main.

public static void main(String... args) throws IOException, InterruptedException {
    MockWebServer server = new MockWebServer();
    server.start();
    server.enqueue(new MockResponse());
    Retrofit retrofit = new Retrofit.Builder().baseUrl(server.url("/")).addConverterFactory(new JsonStringConverterFactory(GsonConverterFactory.create())).build();
    Service service = retrofit.create(Service.class);
    Call<ResponseBody> call = service.example(new Filter("123"));
    Response<ResponseBody> response = call.execute();
    // TODO handle user response...
    // Print the request path that the server saw to show the JSON query param:
    RecordedRequest recordedRequest = server.takeRequest();
    System.out.println(recordedRequest.getPath());
    server.shutdown();
}
Also used : RecordedRequest(okhttp3.mockwebserver.RecordedRequest) MockResponse(okhttp3.mockwebserver.MockResponse) Retrofit(retrofit2.Retrofit) MockWebServer(okhttp3.mockwebserver.MockWebServer) ResponseBody(okhttp3.ResponseBody)

Aggregations

Retrofit (retrofit2.Retrofit)76 Test (org.junit.Test)42 ToStringConverterFactory (retrofit2.helpers.ToStringConverterFactory)35 Before (org.junit.Before)34 MockResponse (okhttp3.mockwebserver.MockResponse)30 Type (java.lang.reflect.Type)17 OkHttpClient (okhttp3.OkHttpClient)16 ResponseBody (okhttp3.ResponseBody)16 IOException (java.io.IOException)13 ParameterizedType (java.lang.reflect.ParameterizedType)13 MediaType (okhttp3.MediaType)13 NonMatchingConverterFactory (retrofit2.helpers.NonMatchingConverterFactory)13 CountDownLatch (java.util.concurrent.CountDownLatch)12 AtomicReference (java.util.concurrent.atomic.AtomicReference)12 NonMatchingCallAdapterFactory (retrofit2.helpers.NonMatchingCallAdapterFactory)11 GsonBuilder (com.google.gson.GsonBuilder)10 DelegatingCallAdapterFactory (retrofit2.helpers.DelegatingCallAdapterFactory)10 Annotation (java.lang.annotation.Annotation)9 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)9 Request (okhttp3.Request)7