-2
このトークンを使用している間にこのエラーが発生し、ユーザー名とパスワードを持つアプリにvolleyを使用して登録しています。アクセストークンを取得しましたが、トークンを渡した後で応答を取得できません。このサーバーエラーを克服し、応答android E/Volley:[3355] BasicNetwork.performRequest:予期しない応答コード422
このトークンを使用している間にこのエラーが発生し、ユーザー名とパスワードを持つアプリにvolleyを使用して登録しています。アクセストークンを取得しましたが、トークンを渡した後で応答を取得できません。このサーバーエラーを克服し、応答android E/Volley:[3355] BasicNetwork.performRequest:予期しない応答コード422
を取得する方法を
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);
あなたのデータはサーバにも意味がありません、あなたのコード内でsetRetryPolicyを追加し、エラー422の説明で説明したように:XMLリクエストボディが整形含まれている場合は、「たとえば、このエラー条件は(発生する可能性がありますすなわち、構文的には正しい)が、意味的に間違ったXML命令になります。 ソース:http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity –