Модернизация, TimeoutException

Я использую модифицированную аутентификацию, и у меня есть время для исключения. Я видел много вопросов, но я не могу решить это.

Вот код

public class FragmentRegistration extends Fragment {
View mainView;

EditText username, email, password, name;
Button button;

ApiClient pentairAPIClient = ApiClient.getInstance();

SupportopObj supportopObj = new SupportopObj();
SupportopObjActivate supportopObjActivate = new SupportopObjActivate();

@Override
public View onCreateView(LayoutInflater inflater,
                         @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    mainView = inflater.inflate
            (R.layout.registration, container, false);

    username = mainView.findViewById(R.id.username);
    email = mainView.findViewById(R.id.email);
    password = mainView.findViewById(R.id.password);
    name = mainView.findViewById(R.id.name);
    button = mainView.findViewById(R.id.register);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //String s = name.getText().toString();
            //String split[] = s.split(" ");

            supportopObj.setFirstName("Tester");
            supportopObj.setLastName("Testryan");
            supportopObj.setUsername(username.getText().toString());
            supportopObj.setEmail(email.getText().toString());
            supportopObj.setPassword(password.getText().toString());

            supportopObjActivate.setUsername(supportopObj.getUsername());
            supportopObjActivate.setEmail(supportopObj.getEmail());
            supportopObjActivate.setPassword(supportopObj.getPassword());
            supportopObjActivate.setType("generic");
            updateApp();               
        }
    });

    return mainView;
}


public void updateApp() {

    Call<ResponseBody> call = pentairAPIClient.registration(supportopObj);
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            if (response.isSuccessful()) {
                activationCall();

            } else {
                Toast.makeText(getContext(), "Something went wrong",
                        Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Toast.makeText(getContext(), "Error...", Toast.LENGTH_SHORT).show();
        }
    });
}


public void activationCall() {
    Call<ResponseBody> callActive = pentairAPIClient.activation(supportopObjActivate);
    callActive.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

            if (response.isSuccessful()) {

                try {
                    String data = response.body().string();
                    JSONObject obj = new JSONObject(data);
                    String client_id = obj.getString("client_id");
                    String client_secret = obj.getString("client_secret");

                    tokenCall(client_id, client_secret);

                } catch (JSONException | IOException e) {
                    e.printStackTrace();
                }

            } else {
                Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Toast.makeText(getContext(), "Error in activation",
                    Toast.LENGTH_SHORT).show();
        }
    });
}


public void tokenCall(String client_id, String client_secret) {
    Call<ResponseBody> token = pentairAPIClient.get_token("password", client_id, client_secret,
            supportopObj.getEmail(), supportopObj.getPassword());

    token.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            if (response.isSuccessful()) {
                Toast.makeText(getContext(), String.valueOf(response.body()), Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getContext(), "Something wrong.....", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Toast.makeText(getContext(), "You're on failure", Toast.LENGTH_SHORT).show();
        }
    });
}

}

У меня нет ошибок при модернизации, я выполняю отладку и вижу весь процесс, поэтому я успешно получаю идентификатор клиента и секрет, а затем получаю временное исключение в последнем onfailure(),

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) 
{
    Toast.makeText(getContext(), "You're onfailure",Toast.LENGTH_SHORT).show();
} 

посмотрите код, это последняя строка. Как это исправить? Приложение не вылетает, но при отладке он сбрасывает время до такого исключения. t={SocketTimeoutException@830038722120}java.net.SocketTimeoutException: timeout, В OkHttpClient

readTimeout(10, TimeUnit.SECONDS).connectTimeout(10, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS);  all are 10, i tried to set it 100, not helps. Help me. Thanks.

1 ответ

Используйте этот клиент:

  public class RetrofitClient {

    private static Retrofit retrofit = null;

    private int timeout = 7000; //change this value if you need more time.


    public static Retrofit getClient(String baseUrl){
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().connectTimeout(timeout , TimeUnit.MILLISECONDS).addInterceptor(interceptor).build();

        if (retrofit == null){
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(client)
                    .build();
        }
        return retrofit;
    }
}
Другие вопросы по тегам