2017-07-29 15 views
0

私はretrofitライブラリで 'jersey'サービスを呼び出すアンドロイドアプリケーションに取り組んでいます。 私のサービスが長時間かかると、タイムアウト例外が発生します。 タイムアウト例外を処理するために以下のコードを使用しました。更新サービスによるWebサービスコールのタイムアウト例外

final OkHttpClient client = new OkHttpClient(); 
client.setConnectTimeout(120, TimeUnit.SECONDS); 
client.setReadTimeout(120, TimeUnit.SECONDS); 
client.setWriteTimeout(120, TimeUnit.SECONDS); 

restAdapter = new retrofit.RestAdapter.Builder() 
     .setEndpoint(URL) 
     .setErrorHandler(new MyErrorHandler()) 
     .setLogLevel(retrofit.RestAdapter.LogLevel.FULL) 
     .setClient(new OkClient(client)) 
     .build(); 

サービス呼び出しは30秒後に失敗し、応答本体はnullです。

サービスがサーバーで実行されているときにサービスの処理が完了し、サーバーに自分の応答を記録するまで、タイムアウト設定が機能せず、修理を完了していないと考えています( )。

アプリケーションサーバ:のWebLogic

サービスライブラリ:ジャージー

Androidのjarファイル:okhttp-2.7.5、okhttp-URLConnectionの-2.7.5は、改造-1.9.0

を助けてください。

ありがとうございます。

+0

の可能性のある重複[補強とOkHttpClient、故障方法で接続タイムアウトをキャッチ(https://stackoverflow.com/questions/29921667/retrofit-and-okhttpclient-catch-connection- – jmarkmurphy

答えて

0

使用この

OkHttpClient httpClient = new OkHttpClient.Builder() 
      .addInterceptor(new Interceptor() { 
       @Override 
       public Response intercept(Chain chain) throws IOException { 
        Request.Builder ongoing = chain.request().newBuilder(); 
        ongoing.addHeader("Content-Type", "application/json; charset=utf-8"); 
        return chain.proceed(ongoing.build()); 
       } 
      }) 
      .connectTimeout(300, TimeUnit.SECONDS) 
      .readTimeout(300, TimeUnit.SECONDS) 
      .writeTimeout(300, TimeUnit.SECONDS) 
      .build(); 

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Constants.URL_API) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(httpClient) 
      .build(); 
+1

ありがとう、私はこれを使用しましたが、動作しませんでした! –

+0

おそらくサーバーがあなたの要求を拒否します。 –

+0

30秒後にretrofitが応答を返すが、サーバーとweblogicで応答が生成されるこの例外がスローされる "java.io.IOException:確立された接続がホストマシンのソフトウェアによって中止された" –

関連する問題