我正在使用 Volley,我想向服务器发出请求,该服务器在“可见层”(我可以在 Web 浏览器中看到它)中返回一个 JSON。我的问题是服务器还在我的应用程序中需要获取的 header 信息中返回我的信息,但我无法从请求中获取 header 。
我已经搜索了很长时间,但我没有找到任何有用的东西(只向请求 header 添加数据,但没有从 header 的响应中获取数据)
有人知道如何实现吗?
最佳答案
要获取 header ,您需要在请求中覆盖 parseNetworkResponse()
。
例如JsonObjectRequest
:
public class MetaRequest extends JsonObjectRequest {
public MetaRequest(int method, String url, JSONObject jsonRequest, Response.Listener
<JSONObject> listener, Response.ErrorListener errorListener) {
super(method, url, jsonRequest, listener, errorListener);
}
public MetaRequest(String url, JSONObject jsonRequest, Response.Listener<JSONObject>
listener, Response.ErrorListener errorListener) {
super(url, jsonRequest, listener, errorListener);
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
JSONObject jsonResponse = new JSONObject(jsonString);
jsonResponse.put("headers", new JSONObject(response.headers));
return Response.success(jsonResponse,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
}
关于android - 从 Volley 响应中获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36430958/