这里有新的android开发尝试使用gson lib将json值发布到服务器我已经转换为json但是当我尝试发送到服务器时抛出400个意外的响应代码在这里让我发布我的代码:
listobj = account_sf_db.toServer();
Gson gson = new Gson();
RequestQueue queue = Volley.newRequestQueue(getBaseContext());
final String yog = gson.toJson(listobj);
String URL = "http://xxx.xx.xx.xxx/xxx/CRM/AcoountCreatePageLoad.svc/xxt/xxxt/ " +yog ;
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
String resp = response.toString();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("god", yog);
return params;
} @Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
headers.put("Accept","application/json");
headers.put("User-agent", "My useragent");
return headers;
}
};
queue.add(stringRequest);
stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
}
答案 0 :(得分:1)
400状态代码用于Bad Request
,这意味着服务器不期望这种类型的请求。
由于语法格式错误,服务器无法理解该请求。客户不应该在没有修改的情况下重复请求。
请检查您要添加的标题(内容类型,用户代理等)是否需要。服务器可能会发生一个简单的请求而不是json
请求。
还尝试读出onErrorResponse
中出现的错误。服务器可能已经响应了您预期的参数和请求类型,还讨论了Web开发人员开发的API类型。
答案 1 :(得分:0)
/ xxt / xxxt /
后,您的网址中有空格String URL =&#34; http://xxx.xx.xx.xxx/xxx/CRM/AcoountCreatePageLoad.svc/xxt/xxxt/&#34; + yog;
删除它,我认为你会没事的。
P.S 400通常表示Url或参数有问题。