失败,TimeoutException onFailure

时间:2018-01-29 15:55:33

标签: java android retrofit 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();
            }
        });
    }

我在改造中没有错误,我正在进行调试,我看到了所有的过程,所以我成功获得了客户端ID和秘密,然后我在最后的onfailure()中获得了timeoutexception,< / p>

 @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); 

都是10,我试着把它设为100,没有帮助。帮我。感谢。

1 个答案:

答案 0 :(得分:0)

@Hayk Mkrtchyan

就在你的

里面
var user = new User(req.body);

应用程序控制主要进入超时

1)Api反应缓慢

2)检查网络连接

连接超时10秒非常低尝试将其设置为至少 60秒