我有以下代码使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);
答案 0 :(得分:1)
我知道这已经太晚了,但这是该问题在Google上的热门搜索。在您的代码中查看以下代码段:
@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
设置为(很抱歉,这是Kotlin,不是Java,但非常相似):
responseString = String(response.data)
答案 1 :(得分:0)
请检查以下内容:
1)使用开发人员工具对Api进行JSON响应。
2)尝试使用排球以外的其他库。
3)如果您愿意使用截击,则可以更改网络请求的依赖版本和代码格式。
答案 2 :(得分:0)
尝试使用此JSONObject jsonObject = new JSONObject(response);