如何使用带有Content-Type和params的android volley从WebApi2获取数据?

时间:2016-10-19 14:30:44

标签: android json model-view-controller asp.net-web-api android-volley

如何使用Android Volley连接到服务器并从WebApi2获取数据作为JSON或XML,并将HTTP标头内容类型定义为 application / json 接受 application / JSON

我在WebApi2中有一个像HttpPost这样简单的方法:

    [HttpPost]
    public String GetData([FromBody]string data)
    {            
        return data;
    }

正如您所看到的,我使用Google扩展程序高级REST客户端来测试该方法,并且它可以正常运行。 enter image description here

我设置了HTTP Headers和params,然后服务器响应是我发送的。

现在我想使用Android Volley连接到服务器并通过设置HTTP标头和参数来获取数据,但它不起作用,我只是得到错误!

public void HttpPOSTRequestWithParameters() {

    try {
        RequestQueue queue = Volley.newRequestQueue(getContext());

        JSONObject params = new JSONObject();
        params.put("data", "Hello World");

        JsonObjectRequest postRequest = new JsonObjectRequest(
                Request.Method.POST,
                "http://localhost:15369/api/Test/GetData",
                params,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("Response", response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d("ERROR", "error => " + error.toString());  
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Type", "application/json");
                headers.put("Accept", "application/json");
                return headers;
            }
        };

        queue.add(postRequest);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

这是我得到的错误:

  

com.android.volley.ServerError

我搜索了整个互联网,我无法找到任何可以帮助我解决问题的答案。

提前感谢。

1 个答案:

答案 0 :(得分:0)

试试这样 Map params = new HashMap params.put(“data”,“Hello World”);

然后在这里 Request.Method.POST, “http://localhost:15369/api/Test/GetData”, 新的JSONObject(params)