如何将多个信息数组和图像数组传递给服务器



我有一个数组,该数组包含图像的图像数量,而另一个是图像大小数组,该数组包含图像大小,也是图像数组。我正在尝试将它们发送到服务器,但每次都失败了。我正在尝试许多例子,但对我没有任何努力。还有其他方法吗?请给我一些提示或链接。

如何在Android中使用凌空发送一系列参数

public void uploadMultipleImage(String url, final List<SelectedImageModel> selectedImageModels)
{
    VolleyMultipartRequest multipartRequest = new VolleyMultipartRequest(Request.Method.POST, url, new Response.Listener<NetworkResponse>() {
        @Override
        public void onResponse(NetworkResponse response) {
            String resultResponse = new String(response.data);
            responseListener.onResultSuccess(resultResponse);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            NetworkResponse networkResponse = error.networkResponse;
            String result = new String(networkResponse.data);
            responseListener.onResultSuccess(result);
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            HashMap<String, String> params = new HashMap<>(selectedImageModels.size());
            for(int i=0; i<selectedImageModels.size(); i++)
                params.put("size["+i+"]",selectedImageModels.get(i).getPhotoSize());
            for(int i=0; i<selectedImageModels.size(); i++)
                params.put("quantity["+i+"]",selectedImageModels.get(i).getPhotoQuantity());
            return params;
        }
        @Override
        public Map<String, String> getHeaders()  {
            Map<String, String> headers = new HashMap<>();
            headers.put("Authorization", "Bearer "+requiredInfo.getAccessToken());
            headers.put("Accept", "application/json");
            headers.put("Content-Type", "x-www-form-urlencoded");
            return headers;
        }
        @Override
        protected Map<String, DataPart> getByteData() {
            Map<String, DataPart> params = new HashMap<>(selectedImageModels.size());
            for(int i=0; i<selectedImageModels.size(); i++)
                params.put("image["+i+"]",new DataPart("imageName",UserProfile.getFileDataFromDrawable(selectedImageModels.get(i).getPhoto())));

            return params;
        }
    };
    requestQueue.add(multipartRequest);
}

每次我获得com.android.volley.server错误500此错误

制定一种发送参数数组的方法。

      private String makeJsonObjectParams() {

//In mediaData,I am sending image to AWS and I will get the download link and I 

//正在下载drowishurl arrayslist中存储下载。

 JSONArray mediaData = new JSONArray();
    try {
        if(img1 != 1) {
            JSONObject temp = new JSONObject();
            temp.put("file", download_url.get(0));
            temp.put("type", "signature");
            mediaData.put(temp);
        }
        if(img2 != 1){
                JSONObject temp1 = new JSONObject();
                temp1.put("file", download_url.get(1));
                temp1.put("type", "id proof");
                mediaData.put(temp1);
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
    //for sending normal details like text
    JSONObject updateDetails = new JSONObject();
    try {

        updateDetails.put("status", 2);
        updateDetails.put("userId", sharedPreferences.getString("user_ID",""));
        updateDetails.put("deviceToken", splash_screen.android_id);


    } catch (JSONException e) {
        e.printStackTrace();
    }
    JSONObject jsonVerificationDetails = new JSONObject();
    try {
        jsonVerificationDetails.put("type", verificatin_type);
        jsonVerificationDetails.put("durationOfStay", durationOfStay.getText().toString());
        jsonVerificationDetails.put("media", mediaData);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    JSONObject jsonBody = new JSONObject();
    try {
        jsonBody.put("verificationDetails", jsonVerificationDetails);
        jsonBody.put("updateDetails", updateDetails);

    } catch (JSONException e) {
        e.printStackTrace();
    }
    final String mRequestBody = jsonBody.toString();
    return mRequestBody;

}

}

通过以下代码将代码发送到服务器。

 void submitData(){
        try {
            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
            final String mRequestBody = makeJsonObjectParams();
            StringRequest stringRequest = new StringRequest(Request.Method.POST, completedTaskUrl, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                       //do whatever you want
                        }
                    } catch (JSONException e) {
                    }

                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }) {
                @Override
                public String getBodyContentType() {
                    return "application/json; charset=utf-8";
                }

                @Override
                public byte[] getBody() throws AuthFailureError {
                    try {
                        return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");
                    } catch (UnsupportedEncodingException uee) {
                        VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", mRequestBody, "utf-8");
                        return null;
                    }
                }
                @Override
                protected Response<String> parseNetworkResponse(NetworkResponse response) {
                    String responseString = "";
                    if (response != null) {
                        responseString = String.valueOf(response.statusCode);
                    }
//                    return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
                    return super.parseNetworkResponse(response);
                }
            };
            requestQueue=Volley.newRequestQueue(getApplicationContext());
            requestQueue.add(stringRequest);
        } catch (Exception e) {//JSONException e
            e.printStackTrace();
        }
    }

最新更新