使用Volley将图像发送到Internet上的服务器时出错

时间:2019-10-10 15:19:29

标签: android web-services android-volley

我尝试将文件发送到服务器时遇到问题,我的问题是有时发送文件,有时不发送文件,我试图做的是发送图像和一些数据,该图像将被上传到服务器上的文件夹和BD中的数据,问题是我不知道为什么有时候有时候如果图像发送和保存正确,有时却什么也没发送,并且给我一个错误406,我没有知道是因为我要发送的图像太重还是可能是问题

我尝试压缩使用PNG或WEBP发送的位图,但是没有一个对我有用,服务器正常工作

这是我用来创建位图的代码:

public String getStringImagen(Bitmap bit){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bit.compress(Bitmap.CompressFormat.JPEG, 98, baos);
        byte[] imagenBytes = baos.toByteArray();
        String encodeImagen = Base64.encodeToString(imagenBytes, Base64.DEFAULT);
        imagenCodificada = encodeImagen;
        return encodeImagen;
    }

这是我将所有内容发送到服务器的方法:

public void enviarRegistro(){
        final ProgressDialog cargando = ProgressDialog.show(this, "Enviando solicitud", "Espere por favor");

            StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    cargando.dismiss();
                    Toast.makeText(DatosBancarios.this, response, Toast.LENGTH_LONG).show();
                    Log.i("CONEXION", response);
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    cargando.dismiss();
                    Toast.makeText(DatosBancarios.this, "Ha ocurrido un error: "+error.getMessage(), Toast.LENGTH_LONG).show();
                }
            }){
                protected Map<String, String> getParams() throws AuthFailureError {
                    String imagen = getStringImagen(bitmap);;
                    String rutaFinalImagen = "http://www.servidor.mx/codigo/img/"+nombre_imagen+".png";
                    Log.i("HIDEOESP","La foto es: "+imagen);
                    Log.i("HIDEOESP","El nombre de la foto es: "+nombre_imagen);
                    //Imprimimos la fecha
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss");
                    String currentDateandTime = sdf.format(new Date());
                    Log.i("FECHA", currentDateandTime);

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

                    //Parametros de la imagen
                    params.put(KEY_IMAGE, getStringImagen(bitmap));
                    params.put(KEY_NOMBRE, nombre_imagen);

                    //Primer bloque
                    params.put(KEY_NOMBReUSU, nombreUsuario);
                    params.put(KEY_APELLIDOUSU, apellidoPUsuario);
                    params.put(KEY_APELLIDOUSUM, apellidoMUsuario);
                    params.put(KEY_NUMEROE, numeroEUsuario);
                    params.put(KEY_FECHA, fechaNUsuario);
                    params.put(KEY_USUARIO, rfcUsuario);
                    params.put(KEY_TEL, telefonoCUsuario);
                    params.put(KEY_CEL, celularUsuario);
                    params.put(KEY_EMAIL, emailUsuario);
                    params.put(KEY_NOMBREIMG, nombre_imagen);
                    params.put(KEY_RUTA, rutaFinalImagen);
                    //Seundo bloque
                    params.put(KEY_CLAVEUNO, beneficiarioBloqueUno);
                    params.put(KEY_CLAVEDOS, beneficiarioBloqueDos);
                    params.put(KEY_CLAVETRES, beneficiarioBloqueTres);
                    params.put(KEY_CLAVECUATRO, beneficiarioBloqueCuatro);
                    //Tercer bloque
                    if(ahorroFinal.getText().toString().equals("")){
                        params.put(KEY_NOMFINAL, "No aplica");
                        params.put(KEY_TITULO, "No aplica");
                        params.put(KEY_FIRMA, "No aplica");
                        params.put(KEY_FECHA, "No aplica");
                        params.put(KEY_DATOSPERSONALES, "No aplica");
                    }else{
                        params.put(KEY_NOMFINAL, KEY_NOMFINAL.getText().toString());
                        params.put(KEY_TITULO, KEY_TITULO.getText().toString());
                        if(KEY_FIRMA== null){
                            params.put(KEY_FIRMA, KEY_FIRMA.getText().toString());
                        }else{
                            params.put(KEY_DATOSPERSONALES, datoTarjeta);
                        }
                        params.put(KEY_FECHA, KEY_FECHA.getText().toString());
                        params.put(KEY_DATOSPERSONALES, KEY_DATOSPERSONALES.getText().toString());
                    }
                    //Tercer bloque dos
                    if(clabeBanco.getText().toString().equals("")){
                        params.put(KEY_B, "No aplica");
                        params.put(KEY_C, "No aplica");
                    }else{
                        params.put(KEY_B, "No aplica");
                        params.put(KEY_C, "No aplica");
                    }


                    return params;
                }
            };

            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(stringRequest);

            Intent intent = new Intent(getApplicationContext(), RegistroFinal.class);
            startActivity(intent);
    }

在控制台中显示给我的错误是我的服务器http://server/project/file.php

路径中的错误406。

0 个答案:

没有答案