如何在Volley或Retrofit中收到确认?

时间:2017-12-27 21:34:49

标签: java android mysql android-volley retrofit

我想将一些数据发布到MySQL数据库。服务器端代码将确定数据是否有效并以该确定响应。收到此响应后,应用程序端代码必须确定是否需要重试或继续。我已经尝试过回调,RequestFuture和旋转等待,但是看起来似乎Volley不能使用这种类型的功能(根据服务器响应做出决定)。有没有其他人成功实现这种功能?

主线程

postCampaign(campaign);
if (//data was invalid) {
    //do postCampaign(campaign) again
}

主线程

private void postCampaign(final Campaign campaign) {
    campaign.setRoomCode("XXXXXXXX");
    StringRequest request = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response) {
                    // I want to make a decision based on response
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    ...
                }
            }
    ) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            // put data
            return params;
        }
    };
    NetworkController.getInstance(this).addToRequestQueue(request);
}

1 个答案:

答案 0 :(得分:0)

从服务器端,您需要获取应用发送的数据。然后你需要检查验证,例如传递的数据是空的/不正确的(如果密码是正确的,则根据密码在数据库中检查密码)。

在数据的服务器端验证中,如果数据在数据库中成功验证并更新,则为 success response 提供正确的 response code 或者如果数据库更新失败,则使用正确的 error response 代码提供 error response 。您可以将这些响应作为json格式传递给客户端(或者以您正在解析的任何格式)

现在在应用程序端,您可能有一个响应回调方法(在retrofit/volley中可用)。从此回调中获得的响应检查是否为成功响应或失败响应,并为成功/失败案例做出适当的决策