2017-04-11 1 views
-2

このトークンを使用している間にこのエラーが発生し、ユーザー名とパスワードを持つアプリにvolleyを使用して登録しています。アクセストークンを取得しましたが、トークンを渡した後で応答を取得できません。このサーバーエラーを克服し、応答android E/Volley:[3355] BasicNetwork.performRequest:予期しない応答コード422

+0

あなたのデータはサーバにも意味がありません、あなたのコード内でsetRetryPolicyを追加し、エラー422の説明で説明したように:XMLリクエストボディが整形含まれている場合は、「たとえば、このエラー条件は(発生する可能性がありますすなわち、構文的には正しい)が、意味的に間違ったXML命令になります。 ソース:http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity –

答えて

0

を取得する方法を

private void getRegisterToken() { 
    final String grant_type = ApiConstants.CLIENT_GRANT_TYPE; 
    final String client_id = ApiConstants.CLIENT_ID; 
    final String client_secret = ApiConstants.CLIENT_SECRET; 


    StringRequest stringRequest1 = new StringRequest(Request.Method.POST, API_BASE_URL_TOKEN, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        VolleyLog.e("Response:%n %s", response); 
        if (pDialog != null) 
         pDialog.dismiss(); 
        try { 
         if (UtilValidate.isNotNull(response)) { 
          JSONObject responseJSONObject = new JSONObject(response); 
          if (responseJSONObject.has(ApiConstants.ACCESS_TOKEN)) { 
           String access_token = Utils.getJSONString(responseJSONObject, ApiConstants.ACCESS_TOKEN); 

           registerDetails(access_token); 
           // getUserDetails(access_token); 
          } 
         } 
        } catch (JSONException ignored) { 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        NetworkResponse networkResponse = error.networkResponse; 
        if (UtilValidate.isNotNull(networkResponse)) { 
         if (pDialog != null) 
          pDialog.dismiss(); 
         Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
         startActivity(intent); 
         finish(); 
        } else { 
         if (pDialog != null) 
          pDialog.dismiss(); 
         Snackbar.make(login_linear_register, getString(R.string.chk_credentials), Snackbar.LENGTH_LONG).show(); 
        } 
       } 
      }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<>(); 
     /* params.put(KEY_USERNAME, ""); 
      params.put(KEY_EMAIL, inputusername); 
      params.put(KEY_PASSWORD, inputpassword); 
     */ 
      params.put(KEY_GRANT_TYPE, grant_type); 
      params.put(KEY_CLIENT_ID, client_id); 
      params.put(KEY_CLIENT_SECRET, client_secret); 
      return params; 
     } 

    }; 
    TwistedAppController.getInstance().addToRequestQueue(stringRequest1); 
} 

//Get Details of logged user 


private void registerDetails(final String access_token) { 

    //  final String grant_type = ApiConstants.CLIENT_GRANT_TYPE; 
//  final String client_id = ApiConstants.CLIENT_ID; 
//  final String client_secret = ApiConstants.CLIENT_SECRET; 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_USER, 

      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        VolleyLog.e("Response:%n %s", response); 
        if (pDialog != null) 
         pDialog.dismiss(); 
        try { 
         if (UtilValidate.isNotNull(response)) { 
          if (pDialog != null) 
           pDialog.dismiss(); 

          Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
          startActivity(intent); 
          finish(); 

         } 
        } catch (Exception ignored) { 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        NetworkResponse networkResponse = error.networkResponse; 

        if (UtilValidate.isNotNull(networkResponse)) { 


         Intent intent = new Intent(RegisterActivity.this,  LoginActivity.class); 
         startActivity(intent); 
         finish(); 
        } else { 
         if (pDialog != null) 
          pDialog.dismiss(); 
         Snackbar.make(login_linear_register, getString(R.string.chk_credentials), Snackbar.LENGTH_LONG).show(); 
        } 

       } 
      }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 

      params.put(KEY_USERNAME, ""); 
      params.put(KEY_EMAIL, username.getText().toString().trim()); 
      params.put(KEY_PASSWORD,  password.getText().toString().trim()); 
    //    params.put(KEY_GRANT_TYPE, grant_type); 
    //    params.put(KEY_CLIENT_ID, client_id); 
    //    params.put(KEY_CLIENT_SECRET, client_secret); 

      return params; 
     } 

     @Override 
     public Map getHeaders() throws AuthFailureError { 
      Map headers = new HashMap(); 
      headers.put("Accept", "application/json"); 
      headers.put("Authorization", "Bearer" + " " + access_token); 
      return headers; 
     } 




    }; 
    TwistedAppController.getInstance().addToRequestQueue(stringRequest, tag_json_obj); 
} 

は同じエラーを得ました。長い検索の後、私はこれを見つけた。

RequestQueue requestQueue = Volley.newRequestQueue(this); 
    jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    requestQueue.add(jsonObjReq); 
関連する問題