使用齐射库将json数据发布到wcf休息服务

时间:2014-12-16 13:11:39

标签: c# android json wcf rest

我正在从asynctask迁移到volley。在我的应用程序中,我想从我的WCF REST服务中获取json数据。我的代码如下

StringRequest postRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // response
                    Log.d("Response", response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub
                    if(error.networkResponse != null && error.networkResponse.data != null){
                        VolleyError error2 = new VolleyError(new String(error.networkResponse.data));
                        error = error;
                    }
                    Log.d("ERROR", "error => " + error.toString());
                }
            }
    ) {
        @Override
        protected Map<String, String> getParams()
        {
            Map<String, String>  params1 = new HashMap<>();
            params1.put("userid", "123");
            params1.put("password", "123");
            return params1;
        }
        @Override
        public Map<String, String> getHeaders() {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json; charset=utf-8");
            return headers;
        }
    } ;

但我收到错误'HTTP错误400.请求来自WCF服务的标题名称无效...

2 个答案:

答案 0 :(得分:1)

很抱歉迟到的回复.WCF Rest服务有一些问题,它会给反斜杠编码的JSon,所以凌空没有得到JSON内容类型

答案 1 :(得分:0)

试试这个

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        url, params,
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
               JSONObject mainObject = new JSONObject(response.toString());
               JSONObject uniObject = mainObject.getJSONObject("yourObjectName");
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
            }
        }) {

    /**
     * Passing some request headers
     * */
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json; charset=utf-8");
        return headers;
    }

};
相关问题