Diogo,
Preste atenção: estamos tentando te dizer que o Multipart existe *justamente* para enviar várias coisas diferentes em uma requisição só, exatamente como você precisa.
A imagem não vai estar dentro do JSON, mas vai estar na mesma requisição que ele.
On May 28, 2013 3:31 PM, "Diogo Henrique" <diogjp10@gmail.com> wrote:
-- Nesse caso Henrique eu teria que fazer dois envios. O primeiro método eu enviaria o meu objeto Pessoa com seus atributos e tal como no método inserirMensagem() que eu postei la em cima usando o método post() que eu postei la em cima também. O segundo método seria esse método que você postou, só que enviando apenas a imagem. a String caminhoImagem seria o caminho da imagem no SDCARD e a String url seria o método la no meu WS.No meu WS esse método seria...@POST@Consumes("image/png")public void upload(InputStream stream) {//aqui eu salvaria a imagem em algum lugar...}
ou eu estou querendo d+ em fazer apenas um método que recebe o objeto Pessoa e dentro desse objeto Pessoa ter um atributo/propriedade que seja do tipo InputStream e que na hora de mandar ele como @Consumes("application/json") eu faria um pessoa.getInputStream() e armazenava ela aonde eu quiser no servidor... viajei ? kkkkkkkkk--
Em 28 de maio de 2013 13:31, Henrique Melo <henrique1985@gmail.com> escreveu:Enviar dessa forma era justamente o que queríamos evitar...Eu envio dessa formapublic final String[] postImagem(String url, String caminhoImagem) {String[] result = new String[2];try {File file = new File(caminhoImagem);if (file.exists()) {HttpPost httpPost = new HttpPost(new URI(URL_WS + url));FileBody bin = new FileBody(file);MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);reqEntity.addPart("file", bin);httpPost.setEntity(reqEntity);HttpResponse response;response = HttpClientSingleton.getHttpClientInstace().execute(httpPost);HttpEntity entity = response.getEntity();if (entity != null) {result[0] = String.valueOf(response.getStatusLine().getStatusCode());InputStream instream = entity.getContent();result[1] = toString(instream);instream.close();Log.d("post", "Result from post JsonPost : " + result[0]+ " : " + result[1]);}}else{result[0] = "200";result[1] = caminhoImagem+" não encontrado.";}} catch (Exception e) {Log.e("NGVL", "Falha ao acessar Web service", e);result[0] = "0";result[1] = "Falha de rede!";}return result;}Em 28 de maio de 2013 12:09, Jonathans Coelho <jonathancoelho@gmail.com> escreveu:tenta isso--// convert from bitmap to byte array public byte[] getBytesFromBitmap(Bitmap bitmap) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.JPEG, 70, stream); return stream.toByteArray(); } // get the base 64 string String imgString = Base64.encodeToString(getBytesFromBitmap(someImg), Base64.NO_WRAP);Ai é só mandar a imagem como string.Em 28 de maio de 2013 12:46, Diogo Henrique <diogjp10@gmail.com> escreveu:
Por exemplo... hoje eu mando um objeto Mensagem da seguinte forma para o WS RestFulpublic String inserirMensagem(Mensagem mensagem) throws Exception {Gson gson = new Gson();String MensagemJSON = gson.toJson(mensagem);String[] resposta = new WebServiceMensagem().post(URL_WS + "inserir", MensagemJSON);if (resposta[0].equals("200")) {return resposta[1];} else {throw new Exception(resposta[1]);}}O método no WS está assim...@POST@Path("/inserir")@Produces("application/json")@Consumes("application/json")public String inserirMensagem(Mensagem mensagem) {return new MensagemBusiness().inserir(mensagem);}A classe MensagemBusiness faz o insert na base de dados. No caso eu queria criar um novo objeto como por exemplo Pessoa....public class Pessoa { nome,telefone,imagem }Com seu Business, e DAO como esse objeto Mensagem ai. Minha dúvida e como eu vou modificar o método post para pode enviar tanto as informações do objeto Pessoa (como nome,telefone,etc) como a imagem também sem modificar drasticamente a estrutura/lógica do WS... por exemplo... o post desse objeto Mensagem...public final String[] post(String url, String json) {String[] result = new String[2];try {HttpPost httpPost = new HttpPost(new URI(url));httpPost.setHeader("Content-type", "application/json");StringEntity sEntity = new StringEntity(json, "UTF-8");httpPost.setEntity(sEntity);HttpResponse response;response = HttpClientSingleton.getHttpClientInstace().execute(httpPost);HttpEntity entity = response.getEntity();if (entity != null) {result[0] = String.valueOf(response.getStatusLine().getStatusCode());InputStream instream = entity.getContent();result[1] = toString(instream);instream.close();Log.d("post", "Result from post JsonPost : " + result[0] + " : " + result[1]);}// ...... e só return e tratamento de erro@Jonathans Coelho não encontrei nada a respeito na web. Você tem algum link pra indicar ?Em 28 de maio de 2013 10:52, Fred <fredferrao@gmail.com> escreveu://trollManda por sedex q chega mais rápido.Nao resisti hehe, sei que deve ter sido o corretor.Uma busca rápida no google ajuda tambem: http://stackoverflow.com/questions/2935946/sending-images-using-http-postEm 28 de maio de 2013 09:47, Henrique Melo <henrique1985@gmail.com> escreveu:
Não necessariamente.
Como vc vai mandar um formulário via postal, vc pode mandar o file e outros elementos.
Logo mais eu posto como foi a minha solução.Em 28/05/2013 08:56, "Diogo Henrique" <diogjp10@gmail.com> escreveu:--Então eu vou ter que fazer bem diferente de como eu faço não e ? porque hoje eu mando um Objeto. No caso eu vou ter que mandar esse Objeto e depois a imagem.. não e ? ou eu to viajando ?--
Em 28 de maio de 2013 00:31, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:Via http post, vc faz um post com multipart/form-data e encapsula o arquivo como file...[]'sErnani2013/5/27 Diogo Henrique <diogjp10@gmail.com>
@POST@Consumes(MediaType.MULTIPART_FORM_DATA)public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream,@FormDataParam("file") FormDataContentDisposition fileDetail) {String uploadedFileLocation = "c://uploadedFiles/" + fileDetail.getFileName();// save itsaveToFile(uploadedInputStream, uploadedFileLocation);String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;return Response.status(200).entity(output).build();}Mais como eu passaria essa imagem para esse método do Web Service ? Nesse Web Service que uso eu passo um objeto via JSON. Como eu vou mandar um Objeto com suas informações + a imagem ? tem como ?No Android eu pego a imagem assim... logo quando o cara tira a foto....Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {public void onPictureTaken(byte[] imageData, Camera c) {if (imageData != null) {BitmapFactory.Options options=new BitmapFactory.Options();options.inSampleSize = 5;Bitmap myImage = BitmapFactory.decodeByteArray(imageData, 0,imageData.length,options);FileUtilities.StoreByteImage(imageData,"foto1", "PNG");finish();}}};Em 27 de maio de 2013 15:15, Diogo Henrique <diogjp10@gmail.com> escreveu:
Vai @Diego vou testar isso =D@Thiago kkkkkk porque ta fácil ? E só aplicar o multiplart ?Em 27 de maio de 2013 11:07, Thiago Catoto <tcatoto@gmail.com> escreveu:
Diogo,Tá fácil! =D"Keep it up!"-- Catoto--2013/5/27 Diogo Henrique <diogjp10@gmail.com>@Jonas,@Thiago eu não usei nenhum framework para fazer o Web Service. Eu utilizo o Jax-RS e Jersey. O Web Service e em Java sim, eu usei tutorial do antunes do Portal Android... segue o link http://www.portalandroid.org/comunidade/viewtopic.php?f=7&t=17389@Diego, você tem o link pra compartilhar ? Eu achei esse aqui http://puspendu.wordpress.com/2012/08/23/restful-webservice-file-upload-with-jersey/ poderia ser uma solução ?Em 26 de maio de 2013 20:48, Thiago Catoto <tcatoto@gmail.com> escreveu:
O WS eh em Java? Vc fez usando algum framework?
-- Catoto
On May 26, 2013 6:40 PM, "Diogo Henrique" <diogjp10@gmail.com> wrote:Olá pessoal, estou precisando enviar uma imagem tirada da câmera para um Web Service. Esse Web Service já existe, eu mesmo o criei e tal mas nunca foi necessario receber uma imagem. Pesquisando eu encontrei o esse link http://www.decom.ufop.br/imobilis/?p=889 ele ensina como mandar uma imagem para o Web Service, mas não fala o que fazer no Web Service para receber essa image. Alguém já passou por isso ? Meu Web Service e RESTFul.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
"Frederico Ferrão da Silva"--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--Henrique Nogueira de Melo
Analista e Arquiteto de Software--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário