/** 获取配置好的retrofit对象来生产Manager对象 */ public static Retrofit getRetrofit() { if (retrofit == null) { if (baseUrl == null || baseUrl.length() <= 0) throw new IllegalStateException("请在调用getFactory之前先调用setBaseUrl"); Retrofit.Builder builder = new Retrofit.Builder(); builder .baseUrl(baseUrl) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()); if (Configuration.isShowNetworkParams()) { OkHttpClient client = new OkHttpClient(); com.squareup.okhttp.logging.HttpLoggingInterceptor interceptor = new com.squareup.okhttp.logging.HttpLoggingInterceptor(); interceptor.setLevel(com.squareup.okhttp.logging.HttpLoggingInterceptor.Level.BODY); client.interceptors().add(new HttpLoggingInterceptor()); builder.client(client); } retrofit = builder.build(); } return retrofit; }
public static <S> S newService(Class<S> serviceClass) { Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(BuildConfig.BASE_URL) .client(client) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create(GsonWrapper.getGson())); return builder.build().create(serviceClass); }
public static WeatherAPI createWeatherService(boolean isLoggerOn) { ObjectMapper mapper = new ObjectMapper(); Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(Constants.BASE_WEATHER_API_URL) .addConverterFactory(JacksonConverterFactory.create(mapper)); if (isLoggerOn) { builder.client(createOkHttpClient()); } Retrofit retrofit = builder.build(); return retrofit.create(WeatherAPI.class); }
/** * Clones the okClient given in parameter, adds the auth interceptors and uses it to configure the * Retrofit * * @param okClient */ public void configureFromOkclient(OkHttpClient okClient) { OkHttpClient clone = okClient.clone(); addAuthsToOkClient(clone); adapterBuilder.client(clone); }
public <S> S createService(Class<S> serviceClass) { return adapterBuilder.build().create(serviceClass); }
public static PlexHttpService getService( String url, String username, String password, boolean debug, int timeout) { OkHttpClient client = new OkHttpClient(); if (timeout > 0) client.setReadTimeout(timeout, TimeUnit.SECONDS); Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(url) .client(client) .addConverterFactory(SimpleXmlConverterFactory.create()); if (username != null && password != null) { String creds = username + ":" + password; final String basic = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP); client .interceptors() .add( new Interceptor() { @Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { Request original = chain.request(); Request.Builder requestBuilder = original .newBuilder() .header("Authorization", basic) .header("Accept", "text/xml") .method(original.method(), original.body()); Request request = requestBuilder.build(); return chain.proceed(request); } }); } if (debug) { client .interceptors() .add( new Interceptor() { @Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { try { com.squareup.okhttp.Response response = chain.proceed(chain.request()); ResponseBody responseBody = response.body(); String body = response.body().string(); Logger.d("Retrofit@Response: (%d) %s", response.code(), body); com.squareup.okhttp.Response newResponse = response .newBuilder() .body(ResponseBody.create(responseBody.contentType(), body.getBytes())) .build(); return newResponse; } catch (Exception e) { } return null; } }); } // Plex Media Player currently returns an empty body instead of valid XML for many calls, so we // must detect an empty body // and write our own valid XML in place of it client .interceptors() .add( new Interceptor() { @Override public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { try { com.squareup.okhttp.Response response = chain.proceed(chain.request()); ResponseBody responseBody = response.body(); String body = response.body().string(); if (body.equals("")) { body = String.format( "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" + "<Response code=\"%d\" status=\"%s\" />", response.code(), response.code() == 200 ? "OK" : "Error"); } com.squareup.okhttp.Response newResponse = response .newBuilder() .body(ResponseBody.create(responseBody.contentType(), body.getBytes())) .build(); return newResponse; } catch (Exception e) { } return null; } }); Retrofit retrofit = builder.client(client).build(); return retrofit.create(PlexHttpService.class); }