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 MarquesGraduando em Ciências da Computação(Licenciatura) - UFPB






0 comentários:
Postar um comentário