ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-添加标头谷歌排球请求吗?

2019-11-22 18:28:44  阅读:156  来源: 互联网

标签:encoding request android-volley header android


好吧,我是这个论坛的新手,如果可以的话,请帮助我.我搜索了但我找不到如何向齐射请求添加标头.我有此代码,我想添加accept-encoding:gzip和api密钥.我将感谢您的帮助.这是代码:

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 one rrorResponse(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 one rrorResponse(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();
}

标签:encoding,request,android-volley,header,android
来源: https://codeday.me/bug/20191122/2061603.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有