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

使用Volley的REST请求返回的结果与Postman不同

微生嘉祥
2023-03-14

我正在使用GenericRequest(内置jsonrequest的扩展)对接收json对象并返回一个字符串的服务器进行REST调用,如果json对象已经存在,则为“0”,否则为非零字符串。

然而,使用下面的代码,无论我发送了什么,我总是得到一个“0”回来。

    JSONObject userobj = new JSONObject();
    try {
        userobj.put("email",email);
        userobj.put("password",password);
        userobj.put("username",name);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    Log.d(TAG, userobj.toString());

    GenericRequest jsonObjReq = new GenericRequest(Request.Method.POST, REGISTER_URL, String.class, userobj,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // Handle access token.
                    Log.d(TAG, "Register received: " + response);
                    long token = Long.parseLong(response);
                    if(token == 0) {
                        Log.d(TAG, "Received 0!");
                        Toast.makeText(MainActivity.this, R.string.registerfail_toast, Toast.LENGTH_LONG).show();
                    } else {
                        Log.d(TAG, "Register success!");
                        Toast.makeText(MainActivity.this, R.string.Welcome, Toast.LENGTH_LONG).show();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d(TAG, error.toString());
                    Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                }
            }) {

        @Override
        public String getBodyContentType() {
            return "application/json";
        }

    };

    jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(0, -1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    helper.add(jsonObjReq);

在Postman中进行测试时,给定输入,如:{“Email”:“DLEE23122”,“Password”:“1234”,“UserName”:“DLEE23122”},它会返回一个非零字符串。(截图如下。)但是当使用截击给出一个稍有不同的输入时,它总是返回一个“0”。会是什么原因呢?

共有1个答案

阎安邦
2023-03-14

甚至我也面临同样的问题,截击默认连接超时被设置为5秒,并且它已经投递了两次,所以在右侧的邮递员中检查时间,如果它更接近5000ms或更大,这可能是问题所在。我的问题通过在Volley请求中添加以下内容得到了解决:

DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(0, -1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
   jsonObjectRequest.setRetryPolicy(retryPolicy);

如果要设置自定义重试策略,请查看此更改后截取超时持续时间

 类似资料:
  • 我需要刷新令牌,但HttpErrorResponse不会返回请求的结果。 收到http://127.0.0.1:8000/api/pdv返回响应:{“令牌错误”:“令牌已过期”} 但是,当我的令牌过期时,我会收到(跨源请求被阻止)。就这个案子。 这是我的配置 配置/cors我用的是barryvdh/laravel-cors 中间件组 我试图得到回应(console.log(error.error)

  • 注意Roy Fielding关于REST设计的以下指南 5.2.1.1资源和资源标识符 REST中信息的关键抽象是资源。任何可以命名的信息都可以是资源:文档或图像、时间服务(例如“今天洛杉矶的天气”)、其他资源的集合、非虚拟对象(例如人)等等。换句话说,任何可能成为作者超文本引用目标的概念都必须符合资源的定义。 资源是到一组实体的概念映射,而不是在任何特定时间点对应于映射的实体。 更准确地说,资源

  • 我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:

  • 任何人都可以在下面帮助我吗? 是否可以通过POSTMAN运行SOAP Get Request? 如果是这样,请提供一些链接或步骤,因为我得到错误

  • 如何在 postman 中验证响应中的所有数据返回 id、名字、姓氏等的结果数量 下面是响应的样子: 我想验证两件事: 1)响应返回id,first_name,last_name,电子邮件 2)所有的first_name都等于“Sebastian ”,不管只有一个结果还是100个结果 这是我尝试过的,但它只适用于一个结果:

  • 我有一个非常基本的,如下所示: 但是,当我将它发送给REST API时,它会收到作为正文。我在Postman中测试了准确的JSON,选择作为,并将添加到endpoint,它就工作了。使用Postman,我能够连接到REST API(在那里我看到JSON对象被接收),然后我得到了所需的响应。 任何想法尝试都将不胜感激!