I want to make synchronous request using volley library and I used the following code :
RequestFuture<Long> future = RequestFuture.newFuture();
AuthenticatedJsonRequest request = new AuthenticatedJsonRequest(Method.GET,ServiceUrl,null,future,future);
requestQueue.add(request);
try {
Long response = future.get();
but the code is blocking forever here :
Long response = future.get();
and this is my custom JsonRequest
public class AuthenticatedJsonRequest extends JsonRequest<Long> {
public AuthenticatedJsonRequest(int method, String url, String requestBody, Listener<Long> listener,
ErrorListener errorListener) {
super(method, url, requestBody, listener, errorListener);
// TODO Auto-generated constructor stub
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
String creds = String.format("%s:%s", RestClient.UserName, RestClient.Password);
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
headers.put("Authorization", auth);
return headers;
}
@Override
protected Response<Long> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString =
new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(Long.valueOf(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}
I debugged volley code and it is stopping in NetworkDispatcher
// Take a request from the queue.
request = mQueue.take();
This question is old, but this doesn't have any response.
I will try write a response for other people have the same problem, I believe that the problem here is that you are running the future from the main thread, and volley user this thread by default for execute the responses.
Future makes a wait in his code, if you run it from main thread you are stopping this thread, and the response handler thread never execute it, an for this problem this is still waiting forever.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With