当前位置: 首页 > 知识库问答 >
问题:

凌空不发送带有参数的帖子请求。

柴宝
2023-03-14

我有下面的代码(谷歌的凌空库)向我的php服务器发送POST请求并获取信息。我没有在php中检查isset($\u POST['id')就尝试了代码,代码运行良好。当我开始检查时,php将跳过if语句并转到else,这意味着代码没有正确发送参数。我怎样才能解决这个问题?

RequestQueue queue = Volley.newRequestQueue(Chat.this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
        CHAT_URL_FEED, null,
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d("THISSSSSSSS", response.toString());
                if (response != null) {
                    parseChatJsonFeed(response);
                }
            }
        }, new Response.ErrorListener(){

    @Override
    public void onErrorResponse(VolleyError error){
        VolleyLog.d("Here", "Error: " + error.getMessage());
    }
}) {

    @Override
    protected Map<String, String> getParams() {
        Map<String, String> params = new HashMap<String, String>();
        params.put("id", id);
        return params;
    }

};

queue.add(jsonObjReq);

我还尝试了以下代码:

RequestQueue queue = Volley.newRequestQueue(Chat.this);

        JSONObject params = new JSONObject();
        try {
            params.put("id", id);
        } catch (JSONException e) {
            e.printStackTrace();
        }


        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                CHAT_URL_FEED, params,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("THISSSSSSSS", response.toString());
                        if (response != null) {
                            parseChatJsonFeed(response);
                        }
                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d("Here", "Error: " + error.getMessage());
            }
        });

        queue.add(jsonObjReq);

但是我仍然得到同样的结果。

共有3个答案

施誉
2023-03-14

对于发送的POST请求,您可以编写基于JsonRequest类P.S的自定义请求类。我在我的库中使用这种方式(基于凌空)

滕学义
2023-03-14
StringRequest postRequest = new StringRequest(Request.Method.POST, CHAT_URL_FEED,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response) {
                    // response
                  Log.d("THISSSSSSSS", response.toString());
            if (response != null) {
                parseChatJsonFeed(response);
            }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // error
                    VolleyLog.d("Here", "Error: " + error.getMessage());
                }
            }
    ) {
        @Override
        protected Map<String, String> getParams()
        {
          Map<String, String> params = new HashMap<String, String>();
    params.put("id", id);
    return params;
        }
    };

Volley在请求JSONObject时不支持参数。您可以获得作为JSON字符串的响应,并且可以使用JSONObject类转换回JSON。

陶俊晤
2023-03-14

在花了更多时间研究这个问题后,我发现Volley无法正确处理带有POST请求的JSON请求。User@SMR在我的问题的评论部分建议了这一点。我在Google群组和git上的mian repo上也看到了类似的答案。我最终使用GET请求将信息传递给服务器并检索JSON提要。

 类似资料:
  • 我想发一个带有改装2的帖子。url有一些参数: url如下所示 www.website.com/server/directory/location。type?arg1=value1&arg2=value2 我被要求使用POST请求。值(value1和value2)在运行时是动态的。我使用HttpClient用Xamarin开始了这个项目,现在我正在用Java原生语言重写它。在C#中,我所要做的就是

  • 问题内容: 我正在使用以下代码发送请求: 在PHP方面,我有这个: 但是,即使category和tag变量都具有值,控制台也会记录一个空数组。我的帖子出了什么问题? 问题答案: 在发送呼叫之前添加: 更换: 与 希望这可以帮助。

  • 问题内容: 根据带有凭据的请求,Firefox仅在以下情况下发送凭据以及跨域帖子: 设置了…但是看来jQuery的Ajax API似乎没有为此提供任何机制。 有什么我想念的吗?我还有其他方法可以做到吗? 问题答案: 功能应该在jQuery 1.5中被破坏。 从jQuery 1.5.1开始,您应该使用xhrFields参数。 文件:http://api.jquery.com/jQuery.ajax/

  • 我想通过post请求将数据发送到API。对于postman,这个API只有在我将参数设置为身体中的表单数据时才起作用,如图所示 这是我的密码 但这对我不起作用。我使用所有这些参数(json、form_params、body),但没有一个不适合我 我用laravel 5.4,狂饮6.3 根据guzzlephp文档,这个配置用于应用程序/x-www-form-urlencoded发送参数,但我需要一个

  • 我在慢速网络上的Volley POST请求有问题。每次我在我的LogCat中看到BasicNetwork.logSlow请求,我的POST请求都会执行两次或更多次,导致1个请求的多次(2次或更多)发布。我已经将重试策略设置为0,但它没有帮助。 这是我的LogCat 截击(5984):[19807]基本网络。logSlowRequests:请求的HTTP响应= 这是我的密码 请帮助,我拼命寻找解决这

  • 我正在测试一种使用改装库发送图像的方法。在此处的改装文件中:http://square.github.io/retrofit/有一种方法可以使用@MultiPart注释。我正在尝试像文档一样使用,但对我来说仍然不起作用。 我该怎么做? 我在努力。 Web服务php文件 Usario的侦听器 活动 例外 电子/错误:(5200):com。谷歌。格森。JsonSyntaxException:com。谷