gpt4 book ai didi

android - 带有 JSON 正文的 StringRequest

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:07 26 4
gpt4 key购买 nike

我正在尝试使用 Volley 发送请求,但我不知道如何让它工作。

我需要发送一个以 JSON 编码数据作为正文的 POST 请求,但在尝试了数小时不同的方法后,我仍然无法让它工作。

这是我当前的请求代码:

User user = User.getUser(context);
String account = user.getUserAccount();
String degreeCode = user.getDegreeCode();

final JSONObject body = new JSONObject();
try {
body.put(NEWS_KEY, 0);
body.put(NEWS_DEGREE, degreeCode);
body.put(NEWS_COORDINATION, 0);
body.put(NEWS_DIVISION, 0);
body.put(NEWS_ACCOUNT, account);
} catch (JSONException e) {
e.printStackTrace();
}

StringRequest request = new StringRequest(Request.Method.POST, GET_NEWS, new Response.Listener<JSONObject>() {
@Override
public void onResponse(String response) {
Log.i(TAG, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + getMessage(error, context));
Toast.makeText(context, getMessage(error, context), Toast.LENGTH_SHORT).show();
}
}) {
@Override
public byte[] getBody() throws AuthFailureError {
return body.toString().getBytes();
}

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type","application/json");
return headers;
}
};
queue.add(request);

但是这段代码总是返回“Bad request error”

我尝试过的一些事情:

  • 覆盖 getParams() 方法而不是 getBody()。 (没用)
  • 发送一个 JSONObjectRequest,主体在构造函数中。这一个有效,但因为我的网络服务返回一个 String 值,所以我总是得到一个 ParseError。这就是我使用 StringRequest 的原因。

非常感谢任何帮助。

最佳答案

正如在 njzk2's comment 中提到的那样,最简单的方法是改写 getBodyContentType()。覆盖 getHeaders() 也可能有效,但您需要放置所有必要的 header ,而不仅仅是 Content-Type,因为您基本上覆盖了原始方法设置的 header 。

您的代码应如下所示:

StringRequest request = new StringRequest(...) {
@Override
public byte[] getBody() throws AuthFailureError {
return body.toString().getBytes();
}

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

关于android - 带有 JSON 正文的 StringRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451094/

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