android - Volley StringRequest 仅获得 200 状态码但没有响应正文
问题描述
我有以下代码可以生成 Volley StringRequest。它似乎工作正常并在 onResponse 中返回 200 个状态代码,但这就是我所得到的。
我期待一个包含一些令牌的 JSON 的字符串表示。
我看过一些帖子说我必须覆盖 getBody 而不是 getParams,但使用 getParams 是我可以从服务器获得 200 的唯一方法。
有没有人知道为什么包含 JSON 的字符串没有在响应中发回?
来自服务器的响应:
E/WebServicesForWebApi: 200
.
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e(TAG, response);
iResult.notifySuccess(null, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, error.toString());
iResult.notifyError(error);
}
}) {
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded";
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("client_id", "HKTPEMS");
params.put("client_secret", "B83845-9AFDDD-46D");
params.put("grant_type", "password");
params.put("username", "testuserrandomQWQ2Matty@care.com");
params.put("password", "testpasssword");
return params;
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String responseString = "";
if (response != null) {
responseString = String.valueOf(response.statusCode);
// can get more details such as response.headers
}
return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
}
};
RequestQueue queue = appObj.getRequestQueue();
queue.add(stringRequest);
解决方案
我知道这已经很晚了,但这是谷歌在这个问题上的热门话题。从您的代码中查看此块:
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String responseString = "";
if (response != null) {
responseString = String.valueOf(response.statusCode);
// can get more details such as response.headers
}
return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
}
responseString
是什么将被输入onResponse()
。
要获取响应的正文responseString
,请设置为:
responseString = new String(response.data, StandardCharsets.UTF_8);
推荐阅读
- javascript - React hooks 警告我缺少依赖项
- php - 对 Instagram 内容的 file_get_contents() 调用响应时间很长(超过 10 秒)
- unity3d - 光线投射点不在平面图层上(奇怪的位置)?
- apache-spark - Spark SQL 嵌套 JSON 错误“输入时没有可行的替代方案”
- email - 如何确保预定的电子邮件无法发送(SendGrid)?
- flutter - 如何使用 Flutter 跳转到移动设置
- python - 在 python 中查找二维列表的索引,其中包含另一个特定的子列表
- jsmodeler - 在 JSModeler 中围绕它们的中心旋转一组对象
- cplex - 计算问题:使用 CPLEX 的对偶值
- c# - 流体网格高度动画 UWP