BasicNetwork.performRequest - 意外响应代码 400 (POST)

2023-12-07

当我尝试使用 Volley StringRequest 或 JsonObjectRequest 通过 REST API 获取数据时。我总是收到 400 错误。它与邮递员一起工作正常。 Http请求方法为POST,Content-Type为application/x-www-form-urlencoded。我还检查了我的参数拼写,它对我来说看起来很好。我尝试过 StringRequest 和 JsonObjectRequest,结果是 E/Volley: [10283] BasicNetwork.performRequest: 意外的响应代码 400。下面是我的代码。我已附上屏幕截图。

enter image description here

Here is the new screenshot Error in code

StringRequest stringRequest = new StringRequest(Request.Method.POST, AppConfig.URL_LOGIN, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d(TAG, response.toString());
                    viewHelper.hideDialog();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d(TAG, error.toString());
                    viewHelper.hideDialog();
                }
            }){
                @Override
                protected Map<String, String> getParams() {
                    // Posting parameters to login url
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("grant_type", "password");
                    params.put("username", email);
                    params.put("password", password);
                    return params;
                }

                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String,String> params = new HashMap<String, String>();
                    params.put("Content-Type", "application/x-www-form-urlencoded");
                    return params;
                }

                @Override
                public String getBodyContentType(){
                    return "application/x-www-form-urlencoded";
                }
            };

            stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

            // Adding request to request queue
            AppController.getInstance().addToRequestQueue(stringRequest, "Authenticating User");

我也尝试过齐射 JSONObjectRequest

            Map<String, String> params = new HashMap<String, String>();
            params.put("grant_type", "password");
            params.put("username", email);
            params.put("password", password);

            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, AppConfig.URL_LOGIN, new JSONObject(params), new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }){
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    HashMap<String, String> headers = new HashMap<String, String>();
                    headers.put("Content-Type", "application/x-www-form-urlencoded");
                    return headers;
                }
            };

谁能帮我解决这个问题。


下面是使用 Volley 库的 POST 请求的工作示例。
将其添加到您的 build.gradle (模块:app) - 编译 'com.mcxiaoke.volley:library:1.0.19'

StringRequest stringRequest = new StringRequest(Request.Method.POST, AppConfig.URL_LOGIN, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d(TAG, response.toString());
                    progressDialog.dismiss();

                    JSONObject jsonObject = null;

                    try {
                        jsonObject = new JSONObject(response);

                        if(jsonObject.has("success")){
                            if(jsonObject.getBoolean("success") == true){
                                JSONObject userObject = new JSONObject(jsonObject.getString("user"));

                                Map<String, String> loginDetails = new HashMap<String, String>();
                                loginDetails.put(KEY_IS_LOGGED_IN, "true");
                                loginDetails.put(ACCESS_TOKEN, jsonObject.getString(ACCESS_TOKEN));
                                loginDetails.put(USERID, userObject.getString(USERID));
                                loginDetails.put(FIRSTNAME, userObject.getString(FIRSTNAME));
                                loginDetails.put(LASTNAME, userObject.getString(LASTNAME));
                                loginDetails.put(EMAIL, userObject.getString(EMAIL));

                                session = new SessionManager(_myActivity);
                                session.setLogin(loginDetails);

                                Intent intent = new Intent(LoginActivity.this, SearchActivity.class);
                                intent.putExtra("FROM_ACTIVITY", "LoginActivity");
                                startActivity(intent);
                                LoginActivity.this.finish();
                            }else{
                                btnLogin.setClickable(true);
                                btnLogin.setEnabled(true);
                                Toast.makeText(getApplicationContext(), "Username or Password does not matched!", Toast.LENGTH_LONG).show();
                            }
                        }

                    } catch (JSONException e) {
                        btnLogin.setClickable(true);
                        btnLogin.setEnabled(true);
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Something went wrong, Please try agian", Toast.LENGTH_LONG).show();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d(TAG, error.toString());
                    progressDialog.dismiss();

                    btnLogin.setClickable(true);
                    btnLogin.setEnabled(true);
                }
            }){
                @Override
                protected Map<String, String> getParams() {
                    // Posting parameters to login url
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("grant_type", "password");
                    params.put("username", email);
                    params.put("password", password);
                    return params;
                }

                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String,String> params = new HashMap<String, String>();
                    params.put("Content-Type", "application/x-www-form-urlencoded");
                    return params;
                }

                @Override
                public String getBodyContentType(){
                    return "application/x-www-form-urlencoded";
                }
            };

            stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

            // Adding request to request queue
            RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());

            mRequestQueue.add(stringRequest);

如果有人遇到上述代码的问题,请发表评论。
感谢所有试图帮助我的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BasicNetwork.performRequest - 意外响应代码 400 (POST) 的相关文章

随机推荐

  • jQuery 在 Firefox 中不工作

    jQuery 在 Firefox 中不工作 它在 IE 和 Google Chrome 中工作正常 但是当我尝试在 Mozilla Firefox 中运行我的应用程序时 jQuery 无法工作 有什么猜测吗 这是我的代码
  • 转发声明一个标准容器?

    是否可以在头文件中转发声明标准容器 例如 采用以下代码 include
  • 矩阵转置 Common Lisp

    好吧 我被告知要在 common lisp 中创建一个矩阵转置函数 我是个初学者 所以不太了解 我的矩阵是列表的列表 我不能使用 apply mapcar 或类似的方法来解决它 只能使用 CONS CAR 和 CDR 如果没有 我的解决方案
  • jquery 动画可以以编程方式链接吗?

    我有这个代码 jQuery flash animate opacity 0 35 200 animate opacity 0 200 animate opacity 0 35 200 animate opacity 0 200 animat
  • 在 XGBoost.XGBRegressor 中创建自定义目标函数

    因此 我对 Python 中的 ML AI 游戏相对较新 目前正在研究围绕 XGBoost 自定义目标函数实现的问题 我的微分方程知识相当生疏 所以我创建了一个带有梯度和 hessian 的自定义 obj 函数 该函数对均方误差函数进行建模
  • Play 2.2.1 Java:相当于 play 1.X 中的 @before 过滤器吗?

    我想实施一个设置用户是否存在 当你could使用过滤器 或拦截器 在 传统 webapp框架方式中 Play首选方式似乎肯定是编写自定义Action方法 请参阅有关的文档动作组合 如果你遵循他们的风格 你就会定义一个新的Action像这样的
  • 链接到 Docker memcached 容器

    我已经尝试 Docker 几天了 并且越来越喜欢它 然而 有一些事情仍然让我困惑 这是我到目前为止所拥有的 创建占用空间少的 Ubuntu 14 04 映像 I got this from a post on this forum bin
  • 对于使用 packages.config 的项目,是否有 contentFiles 的替代方案?

    我有一个 nuget 包 当用户安装我的包时 我希望将其内容复制到构建输出 有对此的支持 NuGet ContentFiles 揭秘在 NuGet v3 3 中 但是 它仅适用于使用project json 当我有一个使用的项目时 内容文件
  • React Native中获取ScrollView的当前滚动位置

    是否可以获取当前滚动位置或当前页面
  • C++11 lambda 实现和内存模型

    我想要一些有关如何正确思考 C 11 闭包和std function就它们如何实现以及如何处理内存而言 尽管我不相信过早优化 但我确实有在编写新代码时仔细考虑我的选择对性能影响的习惯 我还进行了大量的实时编程 例如在微控制器和音频系统上 需
  • android 三角形drawablw xml

    我想画一个等边三角形 我检查过 但它是倒置的 我想要一个如下图所示的三角形 Triangle 三角形 xml
  • Java 扫描器未扫描整个文件

    我正在用 Java 编写一个程序 我需要做的一件事是为最短路径问题创建一组每个有效位置 这些位置在 txt 文件中定义 该文件遵循严格的模式 每行一个条目 没有额外的空格 非常适合使用 nextLine 获取数据 我的问题是 文件中的 24
  • Facebook SDK 3.1 PresentShareDialogModally 失败

    我正在尝试在 iOS 6 上测试 Facebook 的新内置共享 表 但是当我运行示例代码时 它没有显示该表 相反 它会为我发布一个状态 但不会显示它将首先发布的内容 我还以为 Facebook 不再允许你把话放到用户的嘴里了 控制台打印此
  • html 空间显示为 %2520 而不是 %20

    将文件名传递给 Firefox 浏览器会导致其将空格替换为 2520代替 20 我在名为的文件中有以下 HTMLmyhtml html img src 当我加载时myhtml html在 Firefox 中 图像显示为损坏的图像 所以我右键
  • 如何提高 g.drawImage() 方法调整图像大小的性能

    我有一个应用程序 用户可以在相册中上传图片 但上传的图像自然需要调整大小 以便还有拇指可用 并且显示的图片也适合页面 例如800x600 我调整大小的方式是这样的 Image scaledImage img getScaledInstanc
  • 如何在 python 中同时检测多个按键?

    我想对角移动我的机器人汽车 因此为了实现这一点 我想检测 w 是否与 d 或 a 一起按下 如果我想使用 w a s d 作为我的键 我现在有的是这样的 from curtsies import Input with Input keyna
  • 不同签名功能的容器

    我正在尝试用 C 编写一个框架 用户可以在其程序中指示他想要应用的一组函数记忆化战略 假设我们的程序中有 5 个函数f1 f5我们希望避免对函数进行 昂贵的 重新计算f1 and f3如果我们已经使用相同的输入调用它们 请注意 每个函数可以
  • 如何动态加载 gwt 生成的 nocache.js 文件?

    我想加载生成的 GWTfoo foo nocache js使用 JQuery 动态文件 不知何故这个foo foo nocache js文件不被浏览器执行 如果我通常使用 GWT 样式而不使用 JQuery 放置脚本 那么在加载页面后 它会
  • 标准布尔运算顺序

    我正在用 JavaScript 编写一个用于布尔逻辑的调车场算法 但我遇到了操作顺序的问题 我允许的操作是 and or implies equals biconditional not xor nor nand 但是 我不知道这些的优先顺
  • BasicNetwork.performRequest - 意外响应代码 400 (POST)

    当我尝试使用 Volley StringRequest 或 JsonObjectRequest 通过 REST API 获取数据时 我总是收到 400 错误 它与邮递员一起工作正常 Http请求方法为POST Content Type为ap