gpt4 book ai didi

java - Android Volley PUT 请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:04 25 4
gpt4 key购买 nike

总的来说,我是 Volley 和 Android 的新手。下面是我正在尝试执行的代码 fragment (Android 使用 Volley),但是服务器返回 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 请求,我不明白为什么。使用另一个像 Postman 这样的客户端,它按预期工作。这是 postman 请求:

原始请求:
{ “ token ”:“废话”, “密码”:“tttt”, “用户名”:“tester3”

Headers: Content-Type: application/json

我看不出这个请求有什么问题我希望有人能指出我做错了什么?

最佳答案

有时,在 getHeaders() 中添加 header “Content-Type”、“application/json”并不会更好地覆盖 getBodyContentType() 并在此处返回 header 。

所以随着 ,

public Map<String, String> getHeaders()
{
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}

还补充说,

    @Override
public String getBodyContentType() {
return "application/json";
}

这在我使用 POST 时有用。

关于java - Android Volley PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com