【问题标题】:No authentication challenges found - Volley未发现身份验证挑战 - Volley
【发布时间】:2017-01-06 05:37:53
【问题描述】:

嗨,我正在使用 volley 解析我的 api,当我传递有效凭据时,它可以正常工作给我 ab auth 令牌,如果凭据错误,我仍然希望它解析响应,但它给了我“没有身份验证发现的挑战”和JSONObject 响应为null 响应作为回报。是 volley 的问题还是 php 脚本的问题??

private void sendRequest_getAuth(){
        try {
            JSONObject jsonBody = new JSONObject();
            jsonBody.put("phone", "phn in numeric");
            jsonBody.put("password", "pswd");
            JsonObjectRequest JSONRequest = new JsonObjectRequest(Request.Method.POST, "the api url", jsonBody,
                    new com.android.volley.Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            jresponse=response;
                            show_getAuth(jresponse);
                        }
                    },
                    new com.android.volley.Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.d("onError_response",jresponse.toString());
                            Toast.makeText(LoginActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
                         show_getAuth(jresponse);
                        }
                    });

            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(JSONRequest);
        }

需要解析的响应:-

{
  "errors": [
    {
      "message": "Invalid Credentials"
    }
  ]
}

【问题讨论】:

标签: android json parsing android-studio parse-platform


【解决方案1】:

尝试以下方法:-

  • 在 Postman(或任何应用程序)中检查您的 Url 并传递无效凭据并检查您从 Web 服务收到的响应。如果您没有像您在问题中提到的那样得到响应,那么它的服务器端问题 (PHP)。
  • 现在如果您收到上述响应,请检查成功登录和登录响应模式中的错误是否相同。

因为如果 json 签名不匹配,它将无法解析。

  • 如果它进入错误回调,请说明服务器返回的错误是什么。

也看看这个链接... java.io.IOException : No authentication challenges found

如有任何疑问,请随时回复...

【讨论】:

  • 消息来自 api 但我不知道该怎么做我正在尝试获取状态码但得到 null,邮递员中的休息与所需的响应相同。
  • new com.android.volley.Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { NetworkResponse ns=error.networkResponse; Log.d("onError_response", ns.statusCode+""); Toast.makeText(LoginActivity.this, ns.toString(), Toast.LENGTH_LONG).show(); Log.d("onError_response", jresponse.toString()); //show_getAuth(jresponse); }
  • 你检查过我提供的链接吗...如果它在邮递员上工作,那么问题出在 android 代码中,你需要将配置详细信息与服务器端匹配,如标头和请求类型等,
猜你喜欢
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 2013-07-05
  • 2015-06-03
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
相关资源
最近更新 更多