我遇到了Volley String / JsonObject请求的问题。
当我尝试登录时,我想将json-data作为参数传递,但我想要接收的是一个字符串。这会导致问题,因为在使用JsonObject请求时,它需要数据是JsonObject的数据,并且因为返回类型是java.lang.string类型,所以它反而抱怨它不能将java.lang.string类型转换为jsonObject。精细。当尝试String请求时,params不能是jsonObject,所以这根本不起作用。
我该怎么办?总之,我希望能够传递JsonObject参数并检索字符串,这可能吗?
这里有一些代码可以帮助您了解我的情况:
Map<String, String> postParam = new HashMap<String, String>();
postParam.put("name", mEmail);
postParam.put("password", mPassword);
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,"http://" + getString(R.string.user_login), new JSONObject(postParam),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Toast.makeText(LoginActivity.this, "Success " + response ,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG ).show();
Log.d("TAG" ,error.toString());
failedLogin();
}
});
requestQueue.add(jsonObjectRequest);
这会提示错误
com.android.Volley.ParseError:org.json.JSONException:java.lang.String类型的值(STRING TOKEN)无法转换为JsonObject
并且使用字符串请求,不幸的是你无法用getParams传递jsonObject!