Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Re: Problema com post em serviço web

Opa...claro...acabei esquecendo =)

Substitui isso
InputStreamBody photoFis = new InputStreamBody( new FileInputStream(new File(foto)), foto );
multipartContent.addPart("foto", photoFis);

Por isso:
Bitmap bm = BitmapFactory.decodeFile(foto);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bm.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
ByteArrayBody bab = new ByteArrayBody(data, "foto");
multipartContent.addPart("foto", bab);




Em 19 de dezembro de 2012 22:51, Wagner Mariotto Bonfiglio <wmbonfiglio@gmail.com> escreveu:

Seria bom postar a solução também!!

Em 19/12/2012 22:24, "Diego Lopes Marques da Silva" <diego.lopes@dce.ufpb.br> escreveu:
Resolvido!

Em 19 de dezembro de 2012 20:08, Diego Lopes Marques da Silva <diego.lopes@dce.ufpb.br> escreveu:
Pessoal,

Não estou conseguindo fazer um post em um serviço web. O problema maior é para enviar uma foto. Recebi o código de outra pessoa e está me retornando assim a imagem para a variável foto:

 /mnt/sdcard/DCIM/.thumbnails/1355957688612.jpg

Como havia enviado foto em outro app, utilizei a mesma implementação, mas não deu certo.

public synchronized void sendFotoEntregaThread(final String foto) {
        new Thread(new Runnable() {
            public void run() {
                String res = null;
                try {
                    KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
                    trustStore.load(null, null);

                    SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
                    sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

                    HttpParams params = new BasicHttpParams();
                    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
                    HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

                    SchemeRegistry registry = new SchemeRegistry();

                    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), Constants.HTTP_PORT));
                    registry.register(new Scheme("https", sf, Constants.HTTPS_PORT));

                    ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

                    HttpClient httpClient = new DefaultHttpClient(ccm, params);
                    HttpPost postRequest = new HttpPost("http:../service/fotoupload");

                    MultipartEntity multipartContent = new MultipartEntity();

                    multipartContent.addPart("email",new StringBody("teste@teste.com") );
                    multipartContent.addPart("senha",new StringBody("12345") );

                    try {
                        if (foto != null){                          
                            InputStreamBody photoFis = new InputStreamBody( new FileInputStream(
                                    new File(foto)), foto );
                            multipartContent.addPart("foto", photoFis);

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

                    postRequest.setEntity(multipartContent);
                    ResponseHandler<String> responseHandler = new BasicResponseHandler();

                    res = httpClient.execute(postRequest, responseHandler);
                } catch (SocketException e) {
                    Log.e(Constants.TAG, e.getMessage(), e);
                  
                } catch (Throwable e) {
                    Log.e(Constants.TAG, e.getMessage(), e);
                   

                }
            }

        }).start();

    }

Foi criado um formulário http para fazer o teste e funcionou normalmente.
<form action="service/fotoupload" method="post" enctype="multipart/form-data">  	<input id="email" name="email" type="text" />  	<input id="senha" name="senha" type="text" />  	<input id="foto" name="foto" type="file" />  	<input value="send" type="submit"/>  </form>





--
Diego Lopes Marques
Graduando em Ciências da Computação(Licenciatura) - UFPB
Desenvolvedor Android - Avaty! Technology & Innovation
http://sites.google.com/site/lmsdiego/



--
 
 

--
 
 




--
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário