dev*_*v90 5 android httprequest android-layout android-volley android-json
我已经使用volley创建了JSONRequest,它成功点击了服务,我检查了服务端,它接收了数据,然后发送"Success"作为回报.
问题在于,服务String
在输出中返回,而Volley JSON Data
在输出中除外.所以它执行onError
Method而不是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);
Run Code Online (Sandbox Code Playgroud)
Nay*_*ava 11
您可以使用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();
}
};
Run Code Online (Sandbox Code Playgroud)
getheaders
方法是添加自定义标头,如果您想要和getBody
提供request body
.
对于那些仍然需要发送原始 Json 并接收字符串作为响应的人:
默认情况下,主体由application/x-www-form-urlencoded; charset=UTF-8
格式为 的请求参数组成StringRequest
。当重写 时getBody()
,正如 Nayan 正确建议的那样,请考虑重写getBodyContentType()
以匹配新的正文格式。对于 Json 来说应该是
application/json
.
String url = "www.google.com";
HashMap<String, Object> params = new HashMap<>();
params.put("key1", "Android");
params.put("isCool", true);
StringRequest request = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
public void onResponse(String response) {
}
},
new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
}
}
) {
public byte[] getBody() {
return new JSONObject(params).toString().getBytes();
}
public String getBodyContentType() {
return "application/json";
}
};
Volley.newRequestQueue(this).add(request);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5872 次 |
最近记录: |