使用volley库,无法使用参数执行post方法表单

时间:2014-11-06 00:10:29

标签: android android-volley remote-server

我正在使用排球库:http://developer.android.com/training/volley/index.html

获取和'发布没有参数的方法'工作正常。但是当给出参数时,volley不执行表单,并且表单本身的行为是jsonObject:

  

com.android.volley.ParseError:org.json.JSONException:Value Login<类型java.lang.String无法转换为JSONObject

我已经尝试过覆盖getParams()方法:

@Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("username", username);
            params.put("password", password);
            return params;
        }

使用参数:

实例化对象
Map<String, String> params2 = new HashMap<String, String>();
    params2.put("username", username);
    params2.put("password", password);

    JsonObjectRequest jsonObjectRequest1 = new JsonObjectRequest(Request.Method.POST, LOGIN_URL, new JSONObject(params2), new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            //onResponse
        }
    });

他们都没有奏效。我猜我的问题是关于内容类型。 Volley库使用application / json,而我的php代码使用名称 - 值对。

我见过这两个问题,但遗憾的是他们没有解决我的问题:

Google Volley ignores POST-Parameter

Volley Post JsonObjectRequest ignoring parameters while using getHeader and getParams

1 个答案:

答案 0 :(得分:0)

当您使用JsonObjectRequest时,您说您发布的内容是JSON Object,您预期的回复也将是JSONObject。如果这些都不是真的,那么您需要构建自己的Request<T>并设置所需的值。

您看到的错误是因为服务器的响应不是有效的JSON响应。