如何使用参数在 volley android 中创建 post 请求
How to create a post request in volley android with parameters
我正在构建一个 android 应用程序,它应该使用 volley 与服务器通信,它向服务器发送一个请求,其中包含应该在服务器上处理的数据,然后返回结果。
我总是从服务器收到错误,这很可能是因为我无法正确构建请求。
这是请求的格式:
POST API/{RESOURCE}
Content-type: application/json
{
"documents" :
[
{ "image" : "<base64-encoded image>", "type": "id_front or id_back" },
{ "image" : "<base64-encoded image>", "type": "id_front or id_back" }
…
],
"token" : "<access_token_string>"
}
这就是我试图实现它的方式,对吗?我不确定问题是否出在这段代码上,但很可能是在其中。
JSONObject parameters = new JSONObject();
JSONObject[] jsonObjects;
jsonObjects = new JSONObject[1];
try {
Map<String , String> im = new HashMap<>();
im.put("image",imageStringBase64);
im.put("type","id_front");
jsonObjects[0] = new JSONObject(im);
parameters = parameters.put("token", "****");
parameters= parameters.put("documents", jsonObjects);
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, API_URL, parameters, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
StringBuilder formattedResult = new StringBuilder();
formattedResult.append(response);
Log.d(TAG, "jsonObjectResponse : " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "ErrorResponse called " + "error code: " + error.networkResponse.statusCode);
}
})
{
/** Passing some request headers* */
@Override
public Map getHeaders() throws AuthFailureError {
HashMap headers = new HashMap();
headers.put("Content-Type", "application/json");
return headers;
}
};
mQueue.add(jsonObjectRequest);
尝试像下面这样构建您的请求:
JSONObject requestObj;
try {
requestObj = new JSONObject();
JSONArray arr = new JSONArray();
JSONObject obj1 = new JSONObject();
obj1.put("image", imageStringBase64);
obj1.put("type","id_front");
JSONObject obj2 = new JSONObject();
obj2.put("image", imageStringBase64);
obj2.put("type","id_back");
arr.put(obj1);
arr.put(obj2);
requestObj.put("documents", arr);
requestObj.put("token", "****");
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, requestObj,
listener, errorListener);
我正在构建一个 android 应用程序,它应该使用 volley 与服务器通信,它向服务器发送一个请求,其中包含应该在服务器上处理的数据,然后返回结果。 我总是从服务器收到错误,这很可能是因为我无法正确构建请求。 这是请求的格式:
POST API/{RESOURCE}
Content-type: application/json
{
"documents" :
[
{ "image" : "<base64-encoded image>", "type": "id_front or id_back" },
{ "image" : "<base64-encoded image>", "type": "id_front or id_back" }
…
],
"token" : "<access_token_string>"
}
这就是我试图实现它的方式,对吗?我不确定问题是否出在这段代码上,但很可能是在其中。
JSONObject parameters = new JSONObject();
JSONObject[] jsonObjects;
jsonObjects = new JSONObject[1];
try {
Map<String , String> im = new HashMap<>();
im.put("image",imageStringBase64);
im.put("type","id_front");
jsonObjects[0] = new JSONObject(im);
parameters = parameters.put("token", "****");
parameters= parameters.put("documents", jsonObjects);
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, API_URL, parameters, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
StringBuilder formattedResult = new StringBuilder();
formattedResult.append(response);
Log.d(TAG, "jsonObjectResponse : " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "ErrorResponse called " + "error code: " + error.networkResponse.statusCode);
}
})
{
/** Passing some request headers* */
@Override
public Map getHeaders() throws AuthFailureError {
HashMap headers = new HashMap();
headers.put("Content-Type", "application/json");
return headers;
}
};
mQueue.add(jsonObjectRequest);
尝试像下面这样构建您的请求:
JSONObject requestObj;
try {
requestObj = new JSONObject();
JSONArray arr = new JSONArray();
JSONObject obj1 = new JSONObject();
obj1.put("image", imageStringBase64);
obj1.put("type","id_front");
JSONObject obj2 = new JSONObject();
obj2.put("image", imageStringBase64);
obj2.put("type","id_back");
arr.put(obj1);
arr.put(obj2);
requestObj.put("documents", arr);
requestObj.put("token", "****");
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, requestObj,
listener, errorListener);