Dúvidas em como receber um ByteArray no WebService

10 respostas
J

Boa noite pessoal.

Estou com dúvidas ao configurar meu web service para receber um array de bytes do meu android.

do projeto android eu envio :

request.addProperty("file", bytes);

ele vai enviar esse “bytes” para o web service SOAP criado no NetBeans.

Só que não sei como que recebo ele… no caso não sei usar o parametro
um exemplo:

@WebMethod(operationName = "operacao") public String operacao(@WebParam(name = "file") String file) { //TODO write your implementation code here: return null; }

O que vou retornar? Uma String? Como sei se realmente o arquivo foi recebido? E também… como que recebo ele… Byte? String?
Como que vou montar o arquivo ali para ele identificar que foi recebido?
Não encontro nada que me ajude. Por favor pessoal… preciso de ajuda…

Obrigada!!

10 Respostas

R

usa isso:
Nesse caso vai retornar uma String,ai vc vai ter que deserializar esse arquivo.

J

Mas eu não tenho que receber um array de bytes da mesma forma que envio? Ele consegue receber como String?

E como faço para deserializar ele?

Obrigada

R

Olha esse tutorial: http://netbeans.org/kb/docs/websvc/flower-code-ws.html?print=yes

J

Olá…

Eu consegui fazer… Só que estou com outro problema.

Eu informo la na minha aplicação android:

Só que no logcat da como null e que não foi encontrado o arquivo ou diretório, e o arquivo está no c: mesmo. Só que está certo, aí quando envio para o meu web service vai o arquivo vazio.

Como faço para solucionar isso?

Obrigada

R

Erro ocorre prq você está passando um path do arquivo no windows(acredito que vc esteja usando uma avd), e não do android, a avd não tem acesso diretamente a arquivos no windows.
Digamos que o seu arquivo esteja no cartão sd:

File f = new File("/sdcard/arquivo.pdf");

Você pode transferir arquivos para o avd usando o adt do eclipse.

J

Oi Ramon, muito obrigada…

Tive que fazer algumas outras configurações, como permissão, e adicionar umas bibliotecas para acessar o sdcard.

Agora estou pesquisando para fazer o envio desses dados via json, pelo o que li o soap já é baseado em XML, então o envio já está sendo feito por XML.
A questão que eu queria saber se você entende, é que eu vou precisar converter esse arquivo xml para json para aí conseguir mandar para meu servidor?

Obrigada novamente.

R

Se o seu webservice já consome os dados em xml qual seria necessidade de criar um json?

J

É que meu TCC é testes destes tipos de transferências.

Meu projeto é criar um ws Soap e fazer envios de arquivos via xml e json, e da mesma forma criar um ws REST e enviar via xml e json.

R

O soap trabalha apenas com xml,logo você têm a limitação quanto ao uso do json ,o maximo que você poderia fazer em um webservice soap seria criar um campo dentro do xml que recebece uma string com o json,mas isso ao meu ver é algo que se torna inviável com o tempo. Já. Quando você utiliza a arquitetura rest, onde de você pode representar um recurso com n formatos, onde os mais comuns são o xml e json,e que também não se limita ao http, você ganha flexibilidade. Exstem algumas bibliotecas que permitem você trabalhar com json e xml no android,se for soap você pode usar o ksoap2, agora se for rest você pode usar gson ,simpleXML. Já. Server side rest você pode usar jersey, resteasy, restlet entre outros. Pelo que já vi você ja começou com o soap,agora é só pesquisar os nomes que eu te passei e ver qual se adapta melhor a sua situação. E lembrando soap é um protocolo e REST é um padrão arquitetural para desenvolvimento de aplicações e webservices.

J

Pois é… estou pesquisando em relação ao soap enviar via json e realmente não encontrei nada. E o xml faz parte do protocolo soap né. Em relação ao que comentou sobre criar um campo no xml e inserir o json, na verdade não seria viável para meu projeto, pois os testes são individuais entende? Neste caso ficaria o envio dos dois ao mesmo tempo, só que um dentro do outro. E ficava maaais lento.

Já na arquitetura REST tem mais “liberdade” né… e tem mais materiais também.
Vou iniciar a implementação do REST, acredito que este será menos complicado. rs

Mas muito obrigada pela sua atenção. :slight_smile:

Criado 11 de janeiro de 2013
Ultima resposta 9 de mar. de 2013
Respostas 10
Participantes 2