[英]Value of type String cannot be converted to JSONObject
我正在努力解決一個錯誤,該錯誤告訴我它無法將String值轉換為JSONObject。 我試圖將CSRFToken作為參數傳遞給我的JSONObjectRequest。 我不知道這是否是解決問題的正確方法。
我收到錯誤消息: org.json.JSONException: Value inz9J9w0N5qASdJO8soWFBZ4UrEpdnjnpmxvFbJ2 of type java.lang.String cannot be converted to JSONObject
相關代碼如下。
HashMap<String, String> params = new HashMap<>();
params.put("_token", ((TestApplication) getApplication()).getCSRFToken());
JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
AlertDialog alertDialog = new AlertDialog.Builder(RegisterActivity.this).create();
alertDialog.setTitle("Alert");
Log.i("response", response.toString());
alertDialog.setMessage(response.toString());
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
AlertDialog alertDialog = new AlertDialog.Builder(RegisterActivity.this).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage(error.getMessage());
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
});
queue.add(stringRequest);
有誰知道我可能做錯了什么以及如何糾正該問題?
以下內容應有效。
{
"_token": "inz9J9w0N5qASdJO8soWFBZ4UrEpdnjnpmxvFbJ2"
}
你能試一下嗎
String tokenString = (String) ((TestApplication) getApplication()).getCSRFToken();
JSONObject params = new JSONObject();
params.put("_token", tokenString);
JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() {
// ...
}
我知道了。 JsonObjectRequest
不發送任何接受標頭。 添加accept標頭后,我可以得到我想要的響應。
最終代碼:
HashMap<String, String> params = new HashMap<>();
JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// ...
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
AlertDialog alertDialog = new AlertDialog.Builder(RegisterActivity.this).create();
alertDialog.setTitle("Alert");
//alertDialog.setMessage(error.toString());
alertDialog.setMessage(new String(error.networkResponse.data));
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("X-CSRF-TOKEN", ((TestApplication) getApplication()).getCSRFToken());
params.put("Accept", "application/json");
return params;
}
};
queue.add(stringRequest);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.