Tôi mới tham gia Volley và Android nói chung. Dưới đây là đoạn mã (Android sử dụng Volley) mà tôi đang cố gắng thực thi, tuy nhiên đó là máy chủ trả về 400. Sử dụng một REST Client khác hoạt động hoàn hảo. Đó là một yêu cầu đến máy chủ bằng cách sử dụng phương pháp PUT.Yêu cầu PUT Android Volley
@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);
}
Khi tôi thực thi mã này, tôi luôn nhận được 400 yêu cầu không hợp lệ và tôi không thể hiểu tại sao. Sử dụng ứng dụng khách khác như Postman, ứng dụng này hoạt động như mong đợi. Đây là yêu cầu người đưa thư:
Request liệu:
{ "token": "blah", "mật khẩu": "ttttt", "username": "tester3" }
Headers: Content-Type: application/json
Tôi không thể nhìn thấy bất cứ điều gì sai trái với yêu cầu Tôi hy vọng ai đó có thể chỉ ra những gì tôi đang làm sai?
Bạn có tìm thấy giải pháp này không? Tôi cũng bị mắc kẹt trong tình huống tương tự. – RmK
Sợ tôi đã không, hết thời gian và chuyển sang sử dụng trang bị thêm. – WolfBane
Ngay cả khi tôi hết thời gian. Thanh toán ra trang bị thêm nhưng không thể nắm bắt trong thời gian ngắn. Nhưng câu hỏi của bạn đã giúp giải quyết vấn đề. Thêm 'headers.put (" Accept "," application/json "' vào tiêu đề đã giải quyết nó. Cảm ơn. – RmK