Estou com muita dificuldade para encontrar boas informações sobre como chamar um serviço Web SOAP / WSDL padrão com o Android. Tudo o que consegui encontrar são documentos muito complicados e referências ao "kSoap2" e, em seguida, um pouco sobre como analisar tudo manualmente com o SAX . OK, tudo bem, mas é 2008, então imaginei que deveria haver uma boa biblioteca para chamar serviços da Web padrão.
O serviço da web é basicamente um criado no NetBeans . Eu gostaria de ter suporte a IDE para gerar as classes de encanamento. Eu só preciso da maneira mais fácil / elegante de entrar em contato com um serviço Web baseado em WSDL a partir de um telefone Android.
Respostas:
O Android não fornece nenhum tipo de biblioteca SOAP. Você pode escrever por conta própria ou usar algo como o kSOAP 2 . Como você observa, outras pessoas foram capazes de compilar e usar o kSOAP2 em seus próprios projetos, mas eu não precisei.
Até o momento, o Google demonstrou pouco interesse em adicionar uma biblioteca SOAP ao Android. Minha suspeita é que eles preferem dar suporte às tendências atuais de serviços da Web em relação a serviços baseados em REST e usar JSON como um formato de encapsulamento de dados. Ou, usando o XMPP para mensagens. Mas isso é apenas conjectura.
No momento, os serviços da Web baseados em XML são uma tarefa pouco trivial no Android. Não conhecendo o NetBeans, não posso falar com as ferramentas disponíveis lá, mas concordo que uma biblioteca melhor esteja disponível. É possível que o XmlPullParser o salve do SAX, mas não sei muito sobre isso.
fonte
org.apache.http.impl.client.DefaultHttpClient
vem no Android SDK por padrão. Isso conectará você ao WSDL.fonte
É verdade que, devido à sobrecarga, o SOAP não é a melhor opção para troca de dados com dispositivos móveis. No entanto, você pode se encontrar em uma situação em que não controla o formato da saída do servidor.
Portanto, se você precisa seguir o SOAP, há uma biblioteca do kSOAP2 corrigida para Android aqui:
http://code.google.com/p/ksoap2-android/
fonte
Para chamar um serviço da Web de um dispositivo móvel (especialmente em um telefone Android), usei uma maneira muito simples de fazer isso. Eu não usei nenhuma API do cliente de serviço da web na tentativa de chamar o serviço da web. Minha abordagem é a seguinte para fazer uma ligação.
HttpURLConnection
.getResonseCode
).ErrorInput
fluxo no mesmo objeto HTTP e receba o erro, se houver.Eu implementei este procedimento para o telefone Android e ele está sendo executado com êxito. Consigo analisar a resposta, mesmo que tenha mais de 700 KB.
fonte
O SOAP é uma tecnologia inadequada para uso no Android (ou dispositivos móveis em geral) devido à sobrecarga de processamento / análise necessária. Os serviços REST são uma solução mais leve e é isso que eu sugeriria. O Android vem com um analisador SAX e é bastante simples de usar. Se você é absolutamente necessário para manipular / analisar o SOAP em um dispositivo móvel, sinto muito por você, o melhor conselho que posso oferecer é não usar o SOAP.
fonte
Há cerca de um ano, eu estava lendo este tópico tentando descobrir como fazer chamadas SOAP no Android - as sugestões para criar meu próprio usando HttpClient resultaram na criação de minha própria biblioteca SOAP para Android:
IceSoap
Basicamente, permite criar envelopes para enviar por meio de uma API Java simples e, em seguida, os analisa automaticamente em objetos que você define via XPath ... por exemplo:
Torna-se:
Eu estava usando-o para o meu próprio projeto, mas achei que isso poderia ajudar outras pessoas, então passei algum tempo separando-o e documentando-o. Eu realmente adoraria se algumas de suas pobres almas que tropeçam nesse tópico enquanto pesquisavam no "SOAP Android" pudessem tentar e obter algum benefício.
fonte
fonte
Eu tive meu encontro com o KSOAP; Eu escolhi uma abordagem bastante mais simples.
Dado um arquivo WSDL, crie modelos de Solicitação SOAP para cada Solicitação (por exemplo: usando SOAP UI) e substitua os valores a serem passados no código. POSTAR esses dados para o terminal de serviço usando a instância DefaultHttpClient e obter o fluxo de resposta. Analise o fluxo de resposta usando um analisador XML Pull.
fonte
Você pode dar uma olhada no WSClient ++
fonte
Eu criei um novo cliente SOAP para a plataforma Android. Ele está usando uma interface gerada por JAX-WS, mas é apenas uma prova de conceito até agora.
Se você estiver interessado, tente o exemplo e / ou assista à fonte no AndroidSOAP .
fonte
Se você puder, vá para JSON. O Android vem com o pacote org.json completo
fonte
Chame os métodos ksoap2 . Funciona muito bem.
Configure os detalhes, como
e depois para obter o resultado faça
fonte
Espero que a Chamada de um serviço web do Android ajude.
fonte
Alguns meses atrás, eu estava trabalhando com o serviço da web jax-ws no aplicativo j2ee. Lá estávamos usando o CXF wsdl2java para gerar o stub do cliente WS a partir do arquivo WSDL e com esses stubs do cliente consumimos os serviços da web. Algumas semanas atrás, quando eu estava tentando consumir o serviço da Web da mesma maneira na plataforma Android, não pude, porque o jar Android não possui todas as classes de suporte "jax-ws" nele. Naquela época, não encontrei nenhuma ferramenta desse tipo (se não consegui pesquisar no Google com eficiência) para atender aos meus requisitos -
Então, desenvolvi minha própria ferramenta de geração de cliente SOAP para Android . Onde você deve seguir estas etapas:
por exemplo:
fonte
Tenho certeza de que você poderia fazer um pequeno cliente SOAP com o Axis . Instruções de instalação do eixo .
fonte
Acho que chamar o serviço da Web SOAP do aplicativo Android ajudará muito.
fonte
Siga estas etapas pelo método SOAP
No arquivo WSDL,
crie modelos de solicitação SOAP para cada solicitação.
Em seguida, substitua os valores a serem passados no código.
POSTE esses dados para o terminal em serviço usando a instância DefaultHttpClient.
Obtenha o fluxo de resposta e, finalmente,
Analise o fluxo de resposta usando um analisador XML Pull.
fonte
Se você pode usar o JSON, há um white paper, um vídeo e o sample.code em Developing Application Services com servidores PHP e clientes de telefone Android .
fonte
Para mim, a maneira mais fácil é usar uma boa ferramenta para gerar todas as classes necessárias. Pessoalmente, eu uso este site:
http://easywsdl.com/
Ele suporta serviços da Web bastante complexos e usa o ksoap2.
fonte
Eu sugeriria verificar uma ferramenta muito útil que me ajudou muito. Os caras que cuidam desse projeto também foram muito úteis. www.wsdl2code.com/
fonte
Se estiver com problemas para ligar para o Serviço Web no android, use o código abaixo para ligar para o serviço Web e obter resposta. Verifique se o serviço da Web retorna a resposta no formato de tabela de dados. Esse código o ajudará se você estiver usando dados do banco de dados do SQL Server . Se você estiver usando o MYSQL, precisará alterar uma coisa, substitua a palavra NewDataSet da frase
obj2=(SoapObject) obj1.getProperty("NewDataSet");
por DocumentElementSe você tiver algum problema com relação a isso, pode me escrever ..
fonte
Faça o download e adicione o arquivo da biblioteca SOAP ao seu projeto Nome do arquivo: ksoap2-android-assembly-3.4.0-jar-with-dependencies
Limpe o aplicativo e inicie o programa
Aqui está o código para a chamada de serviço SOAP
Os resultados podem ser JSONObject ou JSONArray Or String
Para sua melhor referência, https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/
Obrigado.
fonte
Este é um exemplo prático de consumo de serviços web SOAP no Android.
** Nota :: *** NÃO ESQUEÇA DE ADICIONAR ksoap2.jar no seu projeto e também adicione a permissão INTERNET no arquivo AndroidManifest *
fonte
Você pode executar chamadas de sabão como postagem por http com determinados cabeçalhos. Resolvi esta questão sem bibliotecas adicionais como o ksoap2 Aqui está o código ao vivo recebendo pedidos do serviço de sabão
fonte
Para chamar um serviço da web SOAP do android, tente usar este cliente
NÃO ESQUEÇA DE ADICIONAR ksoap2-android.jar no seu caminho de compilação java
fonte
Adicione Sabar Libaray (
ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar
):String estática pública Fn_Confirm_CollectMoney_Approval (
fonte