我正在从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服务的标题名称无效...
答案 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;
}
};