2016-01-24 14 views
22

yükselttikten sonra istisna atar: Beta-3 sürümüne güçlendirme yükselttikten sonraOkHttpClient Ben Retrofit2 kullanılarak gönderilen tüm zaman isteklerini varsayılan bir başlık eklemek için aşağıdaki kod satırlarını kullanıyorum OkHttp3

private static OkHttpClient defaultHttpClient = new OkHttpClient(); 
static { 
    defaultHttpClient.networkInterceptors().add(new Interceptor() { 
     @Override 
     public Response intercept(Chain chain) throws IOException { 
      Request request = chain.request().newBuilder() 
        .addHeader("Accept", "Application/JSON").build(); 
      return chain.proceed(request); 
     } 
    }); 
} 

, ben OkHttp'yi OkHttp3'e yükseltmek için (aslında ben sadece paket adlarını okhttp'den okhttp3'e değiştirdim, kütüphane retrofit içine dahil edildi). Bundan sonra bu hattan istisnalar olsun:


java.util.Collections $ UnmodifiableCollection.add (Collections.java:932) at java.lang.UnsupportedOperationException : tarafından

defaultHttpClient.networkInterceptors().add(new Interceptor()); 

neden

neden Olduğu: java.lang.ExceptionInInitializerError


Burada sorun nedir?

cevap

56

OkHttp (3) İstemci nesnesini oluşturmak istiyorsanız, oluşturucuyu kullanmanız gerekir.

deneyin değişikliği, bu: Böyle bir şey için

private static OkHttpClient defaultHttpClient = new OkHttpClient(); 

:

OkHttpClient defaultHttpClient = new OkHttpClient.Builder() 
     .addInterceptor(
      new Interceptor() { 
      @Override 
      public Response intercept(Interceptor.Chain chain) throws IOException { 
        Request request = chain.request().newBuilder() 
        .addHeader("Accept", "Application/JSON").build(); 
       return chain.proceed(request); 
       } 
      }).build(); 
+0

OK great! Teşekkürler! –

+0

Net çözüm için teşekkürler – bheatcoker

+0

Evet. iyi çalışıyor. mükemmel çözüm için teşekkürler. –

1
compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile "com.squareup.retrofit2:converter-gson:2.1.0" 
compile "com.squareup.retrofit2:adapter-rxjava:2.1.0" 
compile 'com.squareup.okhttp3:logging-interceptor:3.4.0' 

Muhtemelen bu sürümleri kullanmalıdır. ürününü koyun, numaranızı senkronize edin, tüm ithalatı silin ve tekrar deneyin.

import okhttp3.Interceptor; 

import okhttp3.OkHttpClient; 

import okhttp3.Request; 

import okhttp3.Response; 

import okhttp3.logging.HttpLoggingInterceptor; 

import retrofit2.Retrofit; 

import retrofit2.converter.gson.GsonConverterFactory; 
+0

bu benim aradığım şey :) – Bawa

İlgili konular