requestQueue volley doenst work(发送多个请求)

时间:2018-04-09 06:05:44

标签: android api web-services android-studio android-volley

我想上传多张图片(使用base64编码)。 我使用for:

发送这些图像
for(int i =1; i<6; i++){
        bmp = ((BitmapDrawable)imgs[i].getDrawable()).getBitmap();
        String image = getEncoded64ImageStringFromBitmap(bmp);
        SendImage(image);
}

但它只发送了一个或两个5个请求的请求!这里也没有错误。我有一个requestCueue,我在onCreate方法初始化。 这是我的截击请求:

private void SendImage( final String image) {
    String URL = APPURL;

    final StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    try {
                        JSONObject jsonObject = new JSONObject(response);

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
},
        new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
}) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {

        Map<String, String> params = new Hashtable<String, String>();

        params.put("image", image);
        return params;
    }
};
{
    requestQueue.add(stringRequest);
    Toast.makeText(AddProduct.this,"added "+requestQueue.getSequenceNumber(),Toast.LENGTH_SHORT).show();

}}

2 个答案:

答案 0 :(得分:0)

您必须通过递归方法

执行此操作

只需要打电话一次

multiFileUpload(uploadedFileCount);

然后它将处理递归模型中的所有文件。

private int totalFileCount = 6;
private int uploadedFileCount = 1;
private String URL = APPURL;
private multiFileUpload(int _uploadedFileCount)
{
final StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        if((uploadedFileCount<6)
                        {
                           uploadedFileCount++;
                           multiFileUpload(uploadedFileCount);
                        }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        },
        new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    }
}) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {

        Bitmap bmp = ((BitmapDrawable)imgs[_uploadedFileCount].getDrawable()).getBitmap();
        String image = getEncoded64ImageStringFromBitmap(bmp);
        Map<String, String> params = new Hashtable<String, String>();
        params.put("image", image);
        return params;
    }
};
{
    requestQueue.add(stringRequest);
    Toast.makeText(AddProduct.this,"added "+requestQueue.getSequenceNumber(),Toast.LENGTH_SHORT).show();
}

}

答案 1 :(得分:0)

我的问题出现在后端部分。图像同时出现,我使用time()函数命名它们,只保存在服务器中的一个或两个文件。