好吧,我是这个论坛的新人,如果你能帮助我,请帮帮我。我进行了搜索,但找不到如何将 header 添加到截击请求中。我有这段代码,我想添加 accept-encoding:gzip 和 api key 。我将不胜感激你的帮助。这是代码:
type = "cafe";
url = "https://maps.googleapis.com/maps/api/place/search/json?location=" + Global.location + "&radius=500&types=" + type + "&sensor=true&key="+placesKey;
RequestQueue rq = Volley.newRequestQueue(context);
JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
List<Review> reviews = new ArrayList<Review>();
reviews = Parsing.ParseReviews(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, error.toString(), Toast.LENGTH_SHORT).show();
}
});
rq.add(jsonRequest);
最佳答案
JsonObjectRequest jsObjectRequest = new JsonObjectRequest(
Request.Method.POST,
url,
jsonRequest,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, "Respuesta en JSON: " + response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Error Respuesta en JSON: " + error.toString());
}
}
){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
//return super.getHeaders();
Map<String, String> params = new HashMap<>();
params.put("Content-Encoding", "gzip");
return params;
}
};
VolleySingleton.getInstance(context).addToRequestQueue(jsObjectRequest);
您可以在 getHeaders() 中添加标题。
编辑:如何在 gzip 中编码
JsonObjectRequest jsObjectRequest = new JsonObjectRequest(
/*same here*/
){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Content-Encoding", "gzip");
return params;
}
@Override
public byte[] getBody() {
try{
return Encode.gzip(super.getBody());
}catch(IOException e){
Log.d(TAG, e.getMessage());
return super.getBody();
}
}
};
VolleySingleton.getInstance(context).addToRequestQueue(jsObjectRequest);
GZip 编码
public static byte[] gzip(byte[] bytes) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = null;
try {
gzos = new GZIPOutputStream(baos);
gzos.write(bytes);
}finally {
if (gzos != null){
try{
gzos.close();
}catch (IOException ignore) {}
}
}
return baos.toByteArray();
}
关于android - 添加 header 谷歌 Volley 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216329/