【问题标题】:Volley StringRequest getParams() does not callVolley StringRequest getParams() 不调用
【发布时间】:2023-03-19 09:51:01
【问题描述】:

我正在尝试将 StringRequest 与 volley 一起使用,令人惊讶的是 getParams() 方法从未在 POST 请求中调用。在我的其他项目中它工作正常,但我无法弄清楚这个是怎么回事!

下面是我的代码:

StringRequest request = new StringRequest(Request.Method.POST, SystemConfigs.getNewPosts(context), new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        boolean result = Boolean.parseBoolean(response);
        if (result) {
            publishProgressState(3);
            if (postCount > currentDownloaded) {
                getNewPosts(postsList);
            } else {
                publishProgressState(5);
                downloaded = 0;
                currentDownloaded = 0;
                ds.openReadable();
                String list = ds.getPostsString();
                ds.close();
                getUpdatedPosts(list);

            }
        } else {
            publishProgressState(-1);
        }
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        publishProgressState(-1);
    }
}) {

    @Override
    protected Response<String> parseNetworkResponse(NetworkResponse response) {
        try {
            String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
            boolean result = savePosts(jsonString, true);
            return Response.success(result + "", HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        }
    }

    @Override
    protected Map<String, String> getParams() {
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("page", (++downloaded) + "");
        headers.put("list", list == null ? "" : list);

        return headers;
    }

};
request.setRetryPolicy(new

DefaultRetryPolicy(5000,
                   DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                   DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)

);

appSingleton.getRequestQueue().add(request);

我偶然发现如果我清除了凌空缓存,getParams() 方法被调用。但是如果我想调用像上面这样的分页服务并且我想通过 post 请求发送页码呢?

【问题讨论】:

    标签: android post android-volley


    【解决方案1】:

    SystemConfigs.getNewPosts(context) 返回什么?它是否为字符串请求返回正确的 URL?

    【讨论】:

    • 是的,它返回服务 URL。 onResponse 和 parseNetwrokResponse 调用正确,因此 URL 正确
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多