我正在使用凌空发送POST请求。请求具有自定义标头和json请求正文。请求正文中的一个json值是一个URL。当我创建一个jsonobject时,//中的URL被发送为\ / \ /。 (例如“key1:”http // www.xyz.com“作为”key1“发送:”http:\ / \ / www.xyz.com“ 这会导致400错误。我该如何解决这个问题?
这是使用排球的POST:
RequestQueue queue = Volley.newRequestQueue(this);
try{
jsonBody = new JSONObject();
jsonBody.put("Key1","http://xyz1.com");
jsonBody.put("Key2","val2");
}
catch (JSONException e){
}
JsonObjectRequest req = new JsonObjectRequest(Request.Method.POST,URL, jsonBody,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// handle response
Log.d("MAIN","response recd="+response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// handle error
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("CUSTOM_HEADER", "Yahoo");
headers.put("ANOTHER_CUSTOM_HEADER", "Google");
return headers;
}
};
queue.add(req);
答案 0 :(得分:0)
json值格式正确。通过priting jsonbody.get(“key”)检查 使用.toString打印出json时,转义斜杠。
对于我的情况,通过添加标题修复了400错误: params.put(“Content-Type”,“application / json; charset = utf-8”);