'Volley gives timeout Error but data is sent to server?
I am creating a chatting app using volley. When I send data to the server onResponse
comes and I delete the particular thing from my senderHelper class so that it does not get sent again. Now the problem is that when volley timeout error occurs onErrorResponse
is called but the thing is that the data is on the server too.
Now the senderHelper is not cleaned and I cannot put my cleaning code in onErrorResponse
because sometime the data may not be sent to server. So is there a way to know that even though timeout error occurs but data was sent to server?
public void emptySenderHelper(SenderHelper senderHelper) {
if (senderHelper == null) {
return;
}
String me = senderHelper.getSender_sh();
String reciever = senderHelper.getReciever_sh();
String msg = senderHelper.getMessageSent_sh();
String img = senderHelper.getImageSent_sh();
String encryptedAES = senderHelper.getAes_sh();
String replySender = senderHelper.getReply_sender();
String replyReciever = senderHelper.getReply_reciever();
String replyToMessage = senderHelper.getReply_to_message();
String replyToImage = senderHelper.getReply_to_image();
StringRequest stringRequest = new StringRequest(Request.Method.POST, sendMessageUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.equals("success_sent")) {
chatViewModel.deleteSenderHelper(senderHelper);
} else {
emptySenderHelper(senderHelper);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("from", me);
params.put("to", reciever); // from is friend user name;
params.put("msg_sent", msg);
params.put("img_sent", img);
params.put("encryptedAES", encryptedAES);
/* SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
String date = simpleDateFormat.format(new Date());*/
params.put("msg_date", senderHelper.getDate_sh());
/* simpleDateFormat = new SimpleDateFormat("hh:mm a");
String time = simpleDateFormat.format(new Date());*/
params.put("msg_time", senderHelper.getTime_sh());
params.put("reply_sender",replySender);
params.put("reply_reciever",replyReciever);
params.put("reply_to_message",replyToMessage);
params.put("reply_to_image",replyToImage);
return params;
}
};
RequestQueue myQueue = VolleySingleton.getInstance(ChatActivity.this).getRequestQueue();
myQueue.add(stringRequest);
}
Solution 1:[1]
It seems like i was posting too much data with volley. When i decreased some of the encryption its working normally now.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | M.Ahmed |