【发布时间】:2014-11-02 07:45:04
【问题描述】:
总的来说,我是 Volley 和 Android 的新手。下面是我正在尝试执行的代码 sn-p(使用 Volley 的 Android),但它是服务器返回 400。使用另一个 REST 客户端效果很好。这是使用 PUT 方法向服务器发出的请求。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sendRequest();
}
private void sendRequest() {
RequestQueue queue = Volley.newRequestQueue(this);
final JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("password", "ttttt");
jsonObject.put("username", "tester3");
jsonObject.put("token", "blah");
} catch (JSONException e) {
// handle exception
}
JsonObjectRequest putRequest = new JsonObjectRequest(Request.Method.PUT, url, jsonObject,
new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
// response
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", error.toString());
}
}
) {
@Override
public Map<String, String> getHeaders()
{
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
headers.put("Accept", "application/json");
return headers;
}
@Override
public byte[] getBody() {
try {
Log.i("json", jsonObject.toString());
return jsonObject.toString().getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
};
queue.add(putRequest);
}
当我执行此代码时,我总是收到 400 Bad request,但我不知道为什么。 使用像 Postman 这样的另一个客户端,它可以按预期工作。这是邮递员的要求:
原始请求:
{
“令牌”:“废话”,
“密码”:“tttt”,
“用户名”:“tester3”
}
Headers: Content-Type: application/json
我看不出请求有什么问题,希望有人能指出我做错了什么?
【问题讨论】:
-
你找到解决方案了吗?我也陷入了同样的境地。
-
恐怕我没有,没时间了,继续使用改造。
-
即使我没时间了。结帐改造,但无法在短时间内掌握。但是您的问题有助于解决问题。在标题中添加
headers.put("Accept", "application/json"解决了它。谢谢。 -
很高兴它让你受益:)
标签: java android rest android-volley