OkHttpClientオブジェクトを追加する際にエラーが発生しました。Retrofitを使用してエラーが発生しました。エラー:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:closed
エラーは次のとおりです。 com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:
public static OkHttpClient getUnsafeOkHttpClient() {
try {
File mFolder = new File(Environment.getExternalStorageDirectory() + "/certificate");
if (!mFolder.exists())
{
mFolder.mkdir();
}
String fileName = "certificate1a.cer";
File file = new File(mFolder, fileName);
FileInputStream fis = null;
fis = new FileInputStream(file);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate ca = cf.generateCertificate(fis);
// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
// Create a TrustManager that trusts the CAs in our KeyStore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("TSL");
sslContext.init(null, tmf.getTrustManagers(),null);
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setSslSocketFactory(sslSocketFactory);
okHttpClient.interceptors().add(new APIRequestInterceptor());
okHttpClient.interceptors().add(new APIResponseInterceptor());
okHttpClient.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession sslSession) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
Log.e("hey", "inside this");
Log.e("HOST VERIFIER", hv.toString());
Log.e("HOST NAME", hostname);
return hv.verify("aviatesoftware.in", sslSession);
}
});
return okHttpClient;
} catch (Exception e) {
Log.e("error while getting ","unsafeOkHttpClient "+e.toString());
}
return null;
}
public static <S> S createService(Class<S> serviceClass) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(getUnsafeOkHttpClient())
.build();
return retrofit.create(serviceClass);
}
GetInterface obj = createService(GetTaxInterface.class);
Call<Abc> call = obj.getAbc("555555555555");
call.enqueue(new Callback<Abc>() {
@Override
public void onResponse(Response<Abc> response, Retrofit retrofit) {
Log.e("Asynchronous response", response.toString());
Abc temp = response.body();
Log.e("tax object", temp.toString());
Toast.makeText(getApplicationContext(),"Retrofit Asynchonus Simple try successful",Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Throwable t) {
Log.e("on Failure", t.toString());
Toast.makeText(getApplicationContext(),"Retrofit Asynchonus Simple try failed",Toast.LENGTH_SHORT).show();
}
});
私はGradleのファイルの下に含まれています。ここ
を閉じマイコードです。
- コンパイル 'com.squareup.retrofit:改造:2.0.0-beta2の'
- コンパイル 'com.squareup.retrofit:コンバータ-gson:2.0.0-beta2の'
- コンパイル「COM。 squareup.okhttp:com.google.gson.JsonSyntaxException::java.lang.IllegalStateException:私は失敗に でエラーを取得していますすべての上記のコードでは2.7.0'
:okhttpは
を閉じました私は以下のようないくつかの組み合わせを試してみました。
私は単にOkHttpClient okhttpclient =新しいOkHttpClient()の代わりに、getUnsafeOkHttpClient()
を使用した場合、代わりに.clientの.client(okhttpclient)ように改造するこのokhttpclientオブジェクトを追加します(getUnsafeOkHttpClient ())私は何のエラーもありません。それは私が、セキュリティの目的のためにgetUnsafeOkHttpClient()を使用する必要がonResponse()
を実行します。誰が私が間違っているのか教えてくれますか? 2レトロフィット
が ' ':コンバータ-gson 2.0.0-beta3''&'コンパイルcom.squareup.retrofit' をコンパイルします。 okhttp3:okhttp:3.0.1'' –
私は両方のこれらを試してみました。私はいくつかのログをインターセプタに入れます。私はokhttp3にインターセプタを追加しましたが、それはインターセプタを実行してもhostverifyNameませんでした。 @IntelliJAmiya –