Foros del Web » Programación para mayores de 30 ;) » Programación móvil »

J2ME subir imagen por http y metodo post

Estas en el tema de J2ME subir imagen por http y metodo post en el foro de Programación móvil en Foros del Web. Buenas noches colegas ya hace un buen tiempo estoy con este tema... actualmente estoy desarrollando una APP en J2ME y he llegado a la parte ...
  #1 (permalink)  
Antiguo 05/11/2012, 22:18
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 14 años, 5 meses
Puntos: 1
Pregunta J2ME subir imagen por http y metodo post

Buenas noches colegas ya hace un buen tiempo estoy con este tema... actualmente estoy desarrollando una APP en J2ME y he llegado a la parte donde se envian imágenes a un servidor(Apache) en la cual no me funciona bien del todo.

La APP la testeo con Netbeans SDK 3 y he intentado enviar la imagen que capto por medio de la cámara de varias maneras que explico a continuación.

Post + Base64

Post + Multipart

Post + ArrayByteImage

En las tres formas que intente tome ejemplos de la red ya que no domino mucho el tema de Conexiones http.

Cada una de esas formas las he testeado aparte del proyecto osea creando proyectos distintos y han funcionado bien. pero cuando hago la adaptación al proyecto real pasan algunos problemas con el envió de imágenes, resumiendo.

En memoria del celular tengo array de bites de la foto y lo imprimo en consola bites.lenght para darme cuenta del tamaño que toma

cuando este es mayor de 4000 me da el error de

IOException
Persistent connection dropped after first chunk sent, cannot retry


pero cuando es menor la imagen sube al servidor sin problemas, este punto no ocurre cuando ejecuto los ejemplos que tengo aparte, es mas cuando copie una imagen al proyecto que tenia algo menos menos de 800kb, la carga de la imagen lo hice con el método
Código PHP:
getClass().getResourceAsStream(curdir); 
el cual hago que me retorne un byte[] de la imagen y esta la envió de lo mas normal.

Otra cosa el problema de la conexion chunk solo me pasa la primera vez que hago el envio y si el tamaño del byte[] es mayor de 4000 a la siguiente vez envio y ya no salta a la ioExeption osea funciona bien.

intente hacer una jugada volviendo a llamar al metodo que uso para enviar en el catch de la ioexception en el netbeans lo vuelve a llamar pero en el dispositivo móvil se queda muerto no creo que sea el dispositivo movil porque tambien en el netbeans esta fallando.


Ya no se que puede estar mal. :(


Código PHP:

     
public static boolean uploadImageString uribyte[] rawImage)throws Exception
    
{
        
InputStream ist null;
        
HttpConnection cn null;
        
OutputStream   out null;
         
        try{

            
cn = (HttpConnection)Connector.openuri );
            
cn.setRequestMethodHttpConnection.POST );
    
//        httpCn.setRequestProperty("If-Modified-Since",
    //        "29 Oct 1999 19:43:31 GMT");

           
String encoded =  Base64.encoderawImage ).toString();
           
encoded Funciones.replace(encoded,"+""-");
           
encoded Funciones.replace(encoded,"/""_");
           
String output    "imgdata=" encoded;

           
cn.setRequestProperty("User-Agent""Profile/MIDP-2.0 Configuration/CLDC-1.1");
           
cn.setRequestProperty("Content-Type""application/x-www-form-urlencoded");
           
cn.setRequestProperty("Content-Length:"Integer.toString((output.getBytes().length)));
           
cn.setRequestProperty("Content-Language""es-ES");
           
out = new DataOutputStream(cn.openOutputStream());
           
System.out.println("output : " output);
           
out.writeoutput.getBytes(),0,output.getBytes().length );
//           out.close();

           
buffer = new StringBuffer();
           
ist = new DataInputStream(cn.openDataInputStream());
           
int ch 0;
           while ((
ch ist.read()) != -1) {
                   
process((byte)ch);
           }
            
        }catch(
Exception ex){
                    
ex.printStackTrace();
        }
finally{
            try {  
                    if(
ist != nullist.close();
                    if(
out != nullout.close(); // ERROR chunk connection
                    
if(cn != nullcn.close();
                 return 
true;
             }catch(
IOException ex){
                 
ex.printStackTrace();
                 return 
false;
             }
         }
    } 

Espero me puedan ayudar, muchas gracias .

Etiquetas: 3.0, chunk, connection, j2me, sdk, https
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:09.