Android Retrofit发布请求的服务器超时

时间:2018-01-25 11:14:19

标签: java android asynchronous retrofit retrofit2

我向数据发送一些数据,其中包括用户想要注册时的用户详细信息。我尝试使用Postman并成功添加了记录。我发出的任何发布请求都会返回Timeout,但数据仍会发送到服务器。可能是什么问题,因为我的GET请求没有任何问题。

这是我的API服务:

@POST("/api/account/usersignup/")
@FormUrlEncoded
Call<LendingResponse> savePost(@Field("phoneNumber") String phoneNumber,
                    @Field("name") String name,
                    @Field("email") String email,
                    @Field("password") String password,
                    @Field("confirmPassword") String confirmPassword);

这是我保存调用API的方法:

public void sendPost(String userPhone, String userName, String userEmail, String userPassword, String userConfirmPassword) {


    final ProgressDialog loading = ProgressDialog.show(this, "Registering", "Please wait...", false, false);
    loading.show();

    mAPIService.savePost(userPhone, userName, userEmail, userPassword, userConfirmPassword).enqueue(new Callback<LendingAppResponse>() {
        @Override
        public void onResponse(Response<LendingAppResponse> response, Retrofit retrofit) {
            if(response.body().getSuccess().equals("true")) {
                Intent intent = new Intent(SignUpActivity.this, ValidatePhone.class);
                intent.putExtra("phone", userPhone);
                startActivity(intent);
                loading.dismiss();
            }
            else {
                String message = response.body().getMessage();
                Toast.makeText(SignUpActivity.this, message, Toast.LENGTH_LONG).show();
                loading.dismiss();
            }
        }

        @Override
        public void onFailure(Throwable throwable) {
            String error = throwable.getMessage();
            Toast.makeText(SignUpActivity.this, throwable.getMessage() + " Please try again", Toast.LENGTH_SHORT).show();
            loading.dismiss();
        }
    });
}

我已经搜索过,但似乎无法找到任何好的解决方案。

1 个答案:

答案 0 :(得分:1)

解决方案:延长超时时间 - 通过Lending Square

将ReadTimeout和ConnectTimeout配置为httpClient 一个例子:

   httpClient = new OkHttpClient();
   httpClient.setReadTimeout(60 * 1000, TimeUnit.MILLISECONDS);
   httpClient.setConnectTimeout(60 * 1000, TimeUnit.MILLISECONDS);