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

我得到了一个NetworkUtility.shouldRetryException:意外的响应代码401。我如何向此代码添加标题?

宋嘉禧
2023-03-14
public void login(String username, String password, final APIListener listener){
   String url = BASE_URL + "api/login";
   JSONObject jsonObject = new JSONObject();
   try {
      jsonObject.put("Context-Type","application/json");
      jsonObject.put("email",username);
      jsonObject.put("password",password);

//论成功

      Response.Listener<JSONObject> successListener = response -> {
         try {
            User user = User.getUser(response);
            listener.onLogin(user);
            }
         catch (JSONException e) {
            try {
               User error =User.getErr(response);
               listener.onLogin(error);
             

            } catch (JSONException jsonException) {
               Toast.makeText(mApplication, "There was an error try again later", Toast.LENGTH_LONG).show();
            }
         }
      };

//错误处理

      Response.ErrorListener errorListener = error ->{
         if (error instanceof com.android.volley.NoConnectionError) {
            Toast.makeText(mApplication, "No internet access", Toast.LENGTH_LONG).show();
         }else{
            Toast.makeText(mApplication, "There was an error", Toast.LENGTH_LONG).show();
         }
      };
      
      //Post request

      JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url,jsonObject,successListener,errorListener);
      mRequestQueue.add(request);
   } catch (JSONException e) {
      Toast.makeText(mApplication, "json exception", Toast.LENGTH_LONG).show();
   }

}

共有1个答案

益清野
2023-03-14

JsonObjectRequest从Request继承了getHeaders()方法,您所需要做的就是重写此方法并返回所需的自定义头:

https://javadoc.io/doc/com.android.volley/volley/1.1.1/com/Android/volley/toolbox/jsonObjectRequest.html

下面是一个用法示例:

            String endPointUrl //
            JSONObject requestObject //
            Response.Listener<JSONObject> listener //
            Response.ErrorListener errorListener) //

            final String finalUrl = endPointUrl;

            final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, finalUrl, requestObject, listener, errorListener) {


                    @Override
                    public Map<String, String> getHeaders() throws AuthFailureError {

                       Map<String, String>  headers= new HashMap<String, String>();  
                       headers.put("User-Agent", "Nintendo Gameboy");  
                       headers.put("Accept-Language", "fr");

                      return headers;  
                    }
                };


             mRequestQueue.add(jsonObjectRequest );
 类似资料:
  • 我正在尝试创建一个用户登录页面,当我尝试注册时,我得到了这个错误。我想Json对象部分有问题。我尝试在论坛中搜索其他答案,但似乎都没有解决我的问题。请求你帮我解决这个问题。谢谢是提前的。 我的原木猫

  • 我想寻求您的帮助,我在插页中收到了这个< code >错误。 我想出了什么问题,是" 这是我的php:

  • 问题内容: 我在使用排球库发出网络请求时遇到此错误,我遵循以下链接Android Volley- BasicNetwork.performRequest:意外的响应代码400和意外的响应代码404凌空,但在我的情况下它们都不起作用。这是我的请求代码 有谁能告诉我我的代码在哪里做错了?任何帮助都是可观的。 问题答案: 通常,此响应是由发送错误的URL参数引起的。请检查每个参数的拼写,并确保是否以字符

  • 问题陈述: 我正在尝试访问一个REST API,它将使用Volley返回一个用于各种HTTP状态代码(400、403、200等)的JSON对象。

  • 问题内容: 我正在对旧项目进行更新,到目前为止,我对Android的了解不多。在项目中,我们有关于产品的评论部分。 对于较早发送后的评论,我们返回0(某些错误)和1(成功)。 下面是我们正在使用的代码。 现在,我们将返回对象从0/1更改为用户对象。 是否需要将JsonObjectRequest更新为GJSON请求?否则对象也会被JsonObjectRequest解析? 我问是因为当我在上面执行时,

  • 我正在更新旧项目 在早些时候发送后,我们返回了0作为注释(某些错误) 下面是我们使用的代码。 现在我们已经将返回对象从0/1更改为用户对象。 是否需要将JsonObjectRequest更新为GJSON请求?或者对象也会被JsonObjectRequest解析? 我这样问是因为当我执行上面的命令时,我得到的错误如下。 知道我为什么会出现这个错误吗? 注意:此URL对于iPhone应用程序运行良好。