使用Android Volley作为Json请求和响应为String

时间:2014-04-21 07:08:49

标签: android-volley

我的情况是使用Android-volley POST我的json对象,我能够成功发布所有内容,我的数据在服务器中可见,但服务器响应为String而不是json,这就是我遇到错误的原因。

com.android.volley.ParseError: org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

当我们传递json对象时,可以在齐射中解析字符串吗?  我的工作代码如下,

            HashMap<String, String> params = new HashMap<String, String>();
    params.put("email", "dude@gmail.com");
    params.put("password", "qweffrty");
    params.put("name", "Dudeb");
    params.put("place", "Bangalore");
    params.put("phone", "991000000000");

    JsonObjectRequest request = new JsonObjectRequest(
            Request.Method.POST,
            Constants.BASE_URL+"register",
            new JSONObject(params),
            createSuccessListener(),
            createErrorListener());


         private static Response.Listener<JSONObject> createSuccessListener() {
    return new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            // TODO parse response

            String test;
            test = "yyy";
        }
    };
}

private static Response.ErrorListener createErrorListener() {
    return new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
          //  Log.d(TAG, "Error Response code: " + error.getMessage());
            String test;
            test = "yyy";
        }
    };
}

1 个答案:

答案 0 :(得分:1)

不,因为在实现中查看这些行,在JsonRequest中我们有:

public abstract class JsonRequest<T> extends Request<T>
...
abstract protected Response<T> parseNetworkResponse(NetworkResponse response);

在JsonObjectRequest中我们有:

public class JsonObjectRequest extends JsonRequest<JSONObject>

并查看JsonObjectRequest中的响应定义:

protected Response<JSONObject> parseNetworkResponse(NetworkResponse response)

所以如果你想使用齐声库的JsonObjectRequest你发送json并传递json。你可以改用StringRequest。