2017-02-19 10 views
0

AndroidアプリケーションにRetrofitライブラリを使用しました。接続タイムアウトを120秒に設定する必要があります。どのようにできるのか ?Android用Retrofitライブラリで接続タイムアウトを設定するにはどうすればよいですか?

バージョン:

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
compile 'com.google.code.gson:gson:2.8.0' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 

OperatingApiClient:

public class OperatingApiClient { 
    public static final String BASE_URL = "http://172.16.2.39/"; 
    private static Retrofit retrofit = null; 


    public static Retrofit getClient() { 
     if (retrofit==null) { 
      retrofit = new Retrofit.Builder() 
        .baseUrl(BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .build(); 
     } 
     return retrofit; 
    } 
    } 

TargetFileApiInterface:

public interface TargetFileApiInterface { 
@GET("NNGOperating/GetTargetFileList") 
Call<TargetFileApiResponse> getTargetFileList(@Query("api_key") 
String apiKey); 

} 

TargetFileApiResponse:

public class TargetFileApiResponse { 
    @SerializedName("TargetFileList") 
    private List<TargetFile> targetfileslist; 

    public TargetFileApiResponse(List<TargetFile> targetfileslist) { 
     this.targetfileslist = targetfileslist; 
    } 

    public List<TargetFile> getTargetfileslist() { 
     return targetfileslist; 
    } 

    public void setTargetfileslist(List<TargetFile> targetfileslist) { 
     this.targetfileslist = targetfileslist; 
    } 
    } 

答えて

1

これは機能しています。

public class OperatingApiClient { 
    public static final String BASE_URL = "http://172.16.2.39/"; 
    private static Retrofit retrofit = null; 


    public static Retrofit getClient() { 
     if (retrofit==null) { 
      retrofit = new Retrofit.Builder() 
        .baseUrl(BASE_URL) 
        .client(okHttpClient) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .build(); 
     } 
     return retrofit; 
    } 

    public static OkHttpClient okHttpClient = new OkHttpClient.Builder() 
      .readTimeout(120, TimeUnit.SECONDS) 
      .connectTimeout(120, TimeUnit.SECONDS) 
      .build(); 

} 
4

はあなたの改造ビルダーのためのHttpClientを設定し、以下のことを試してみてください改造

retrofit = new Retrofit.Builder() 
        .baseUrl(BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .client(client) 
        .build(); 
1

ため、その後OkHttp

OkHttpClient client = new OkHttpClient.Builder() 
     .connectTimeout(yourTime, TimeUnit.SECONDS) 
     .writeTimeout(yourTime, TimeUnit.SECONDS) 
     .readTimeout(yourTime, TimeUnit.SECONDS) 
     .build(); 

に設定されたクライアントを構成を設定することができます。

OkHttpClient.Builder httpClient = new OkHttpClient.Builder() 
.readTimeout(60, TimeUnit.SECONDS) 
.connectTimeout(60, TimeUnit.SECONDS); // I am using 60 seconds you can user your own 


public static Retrofit getClient() { 
     if (retrofit==null) { 
      retrofit = new Retrofit.Builder() 
        .baseUrl(BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .client(httpClient.build()) //setting your custom client 
        .build(); 
     } 
     return retrofit; 
    } 
関連する問題