我想将一些数据发布到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);
}
答案 0 :(得分:0)
从服务器端,您需要获取应用发送的数据。然后你需要检查验证,例如传递的数据是空的/不正确的(如果密码是正确的,则根据密码在数据库中检查密码)。
在数据的服务器端验证中,如果数据在数据库中成功验证并更新,则为 success response
提供正确的 response code
或者如果数据库更新失败,则使用正确的 error response
代码提供 error response
。您可以将这些响应作为json格式传递给客户端(或者以您正在解析的任何格式)
现在在应用程序端,您可能有一个响应回调方法(在retrofit/volley
中可用)。从此回调中获得的响应检查是否为成功响应或失败响应,并为成功/失败案例做出适当的决策