我使用 volley 创建了 JSONRequest,它成功命中了服务,我检查了服务端,它接收到数据,并返回“成功”。
问题在于,Service在输出中返回String
,而Volley在输出中排除了一些JSON Data
。所以它执行 onError
方法,而不是 onResponse
。
请指导我如何让它接受字符串响应,或者当您使用 JSONObject
作为请求时它是不可能的。
Request<JSONObject> jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, "http://192.168.0.101:8888/api/services/mytest",
jsonParent, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Success", response.toString());
deleteFile();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Error", error.toString());
deleteFile();
}
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(jsonObjectRequest);
最佳答案
您可以使用 StringRequest 而不是 JSONRequest。
StringRequest stringRequest = new StringRequest(methodType, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers == null ? super.getHeaders() : headers;
}
@Override
public byte[] getBody() throws AuthFailureError {
return "Your JSON body".toString().getBytes();
}
};
getheaders
方法是根据需要添加自定义 header 和 getBody
以提供 请求正文
。
关于android - 如何在 Volley 中从 JSONObject 获取字符串响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870844/