首页 > 解决方案 > 网络服务问题并将图像加载到我的目录

问题描述

嗨,我想从我的 android 应用程序将图像加载到主机中的文件夹中,我正在使用一些库,但我不知道问题出在哪里,所以在 volley errorresponse 中显示了这个错误:

org.json.JSONException: org.json.JSONArray 类型的值 [] 无法转换为 JSONObject

这是我在 android studio 中的代码:

 public class AgregarMultiplesImagenes extends AppCompatActivity implements 
  View.OnClickListener {                                                           

private Button btnSelImagenes,btnSubirImagenes;                                                                                                         
private ArrayList<String> listaDeImagenes;                                                                                                              
private ArrayList<String> ListaDeNombres;                                                                                                               
private ArrayList<String> listaDeRutas;                                                                                                                 
private ProgressDialog progressDialog;                                                                                                                  

@Override                                                                                                                                               
protected void onCreate(Bundle savedInstanceState) {                                                                                                    
    super.onCreate(savedInstanceState);                                                                                                                 
    setContentView(R.layout.activity_agregar_multiples_imagenes);                                                                                       
    InicializarObjetosForm();                                                                                                                           
    inicializarOtrosObjetos();                                                                                                                          
}                                                                                                                                                       

private void inicializarOtrosObjetos() {                                                                                                                

     this.listaDeImagenes = new ArrayList<>();                                                                                                          
     this.listaDeRutas = new ArrayList<>();                                                                                                             
     this.ListaDeNombres = new ArrayList<>();                                                                                                           
     this.progressDialog = new ProgressDialog(this);                                                                                                    
}                                                                                                                                                       

private void InicializarObjetosForm() {                                                                                                                 

     //enlazando al layout                                                                                                                              
    this.btnSelImagenes = (Button) findViewById(R.id.btnSeleccionarImagenes);                                                                           
    this.btnSubirImagenes = (Button) findViewById(R.id.btnSubirImagenes);                                                                               

    //Poniendo eventoss                                                                                                                                 

    this.btnSelImagenes.setOnClickListener(this);                                                                                                       
    this.btnSubirImagenes.setOnClickListener(this);                                                                                                     
}                                                                                                                                                       

@Override                                                                                                                                               
public void onClick(View v) {                                                                                                                           

     switch (v.getId()) {                                                                                                                               
         case R.id.btnSeleccionarImagenes:                                                                                                              

             //llamando con un intent al seleccionador de imagenes                                                                                      
             Intent abrirElChooserImagenes = new Intent(this, PickImageActivity.class);                                                                 
             abrirElChooserImagenes.putExtra(PickImageActivity.KEY_LIMIT_MAX_IMAGE, 3);                                                                 
             abrirElChooserImagenes.putExtra(PickImageActivity.KEY_LIMIT_MIN_IMAGE, 3);                                                                 
             startActivityForResult(abrirElChooserImagenes, PickImageActivity.PICKER_REQUEST_CODE);                                                     

             break;                                                                                                                                     
         case R.id.btnSubirImagenes:                                                                                                                    
              this.progressDialog.setMessage("Subiendo imagenes....");                                                                                  
              this.progressDialog.show();                                                                                                               

             subirImagenes();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
             break;                                                                                                                                     
     }                                                                                                                                                  
}                                                                                                                                                       

private void subirImagenes(){                                                                                                                           

    if(this.listaDeImagenes.isEmpty()){                                                                                                                 
                    Toast.makeText(this,"Debe seleccionar 3 imagenes",Toast.LENGTH_LONG).show();                                                        
                    return;                                                                                                                             

    }                                                                                                                                                   

    JsonArray jsonArray = new JsonArray();// el array donde iran todas las imagenes codificadas en Base64                                               
    for(String imagenEncode: this.listaDeImagenes){                                                                                                     
            jsonArray.add(imagenEncode);                                                                                                                
    }                                                                                                                                                   

    JSONObject jsonObject = new JSONObject();//Aqui van a ir los parametros que se le van a mandar como POST                                            

    try {                                                                                                                                               
        jsonObject.put("listaImagen",jsonArray);                                                                                                        
    } catch (JSONException e) {                                                                                                                         
        e.printStackTrace();                                                                                                                            
    }                                                                                                                                                   
            String url = "http://"+MainActivity.IP+"/Olx/WSProys1/SubirMuchasImagenes.php";                                                             
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, jsonObject, new Response.Listener<JSONObject>() {                                  
        @Override                                                                                                                                       
        public void onResponse(JSONObject response) {                                                                                                   
            try {                                                                                                                                       
                Toast.makeText(getApplicationContext(),response.get("ok").toString(),Toast.LENGTH_LONG).show();                                         
            } catch (JSONException e) {                                                                                                                 
                e.printStackTrace();                                                                                                                    

            }                                                                                                                                           
        }                                                                                                                                               
    }, new Response.ErrorListener() {                                                                                                                   
        @Override                                                                                                                                       
        public void onErrorResponse(VolleyError error) {                                                                                                
                      Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG).show();                                              
        }                                                                                                                                               
    })      ;                                                                                                                                           

    Volley.newRequestQueue(this).add(jsonObjectRequest);                                                                                                

    this.progressDialog.dismiss();                                                                                                                      

}                                                                                                                                                       

@Override                                                                                                                                               
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {                                                               
    super.onActivityResult(requestCode, resultCode, data);                                                                                              

    if(requestCode == PickImageActivity.PICKER_REQUEST_CODE){                                                                                           

        if(resultCode != PickImageActivity.RESULT_OK){                                                                                                  
           return;                                                                                                                                      
        }                                                this.listaDeRutas = data.getStringArrayListExtra(PickImageActivity.KEY_DATA_RESULT);           
        if(this.listaDeRutas != null && !this.listaDeRutas.isEmpty()){                                                                                  
                this.listaDeImagenes.clear();                                                                                                           
                for(int i = 0; i<this.listaDeRutas.size(); i++){                                                                                        
                    try {                                                                                                                               
                        Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),Uri.fromFile(new File(this.listaDeRutas.get(i))));  
                        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();                                                      
                        bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);                                                          
                        String bitMapCodificado = Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);                            
                        this.listaDeImagenes.add(bitMapCodificado);                                                                                     
                        File laImagen = new File(this.listaDeRutas.get(i));                                                                             
                        this.ListaDeNombres.add(laImagen.getName());                                                                                    

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

}

这是我的 php 网络服务:

<?php
 $host_name = "localhost";
 $database = "base_olx";
  $user = "root";
 $password = "";

 $con = mysqli_connect($host_name,$user,$password,$database);

 $json = json_decode(file_get_contents("php://input"),true);

 //$nombre = $json["nombre"];
 $nombre = "nombreestatico";
 $listaImagen = $json["listaImagen"];

    $respuesta = array();

     if(isset($listaImagen)){

       if(is_array($listaImagen)){
       foreach($listaImagen as $imagen){
           $decodedImagen = base64_decode($imagen);
           $return = 
       file_put_contents("../fotos/".$nombre."_".$i.".JPG",$decodedImagen);
           $i++;

           $respuesta["ok"] = 1;
       }
   }

   echo  json_encode( $respuesta);
  }else{
   $respuesta["ok"] = 0;

   echo  json_encode( $respuesta);
  }
 ?>                                                                                                                                      

标签: phpandroidjsonweb-services

解决方案


推荐阅读