Consumir Web Service tendo apenas a URL e o método

4 respostas
M

Tenho que desenvolver uma aplicação mínima para testar um Web Service, enviar para o cliente e posteriormente incorporar na aplicação final (desktop).

Durante o desenvolvimento, não terei acesso a rede onde a URL está disponível, então não posso usar o wsimport.

Só tenho a URL do descriptor, no formato http://…?wsdl, e o método que a aplicação vai acionar (nome, tipo de retorno e parâmetros).

Tem como consumir um Web Service somente com essas informações?

Obrigado!

4 Respostas

K

Cara eu achei num dos forum aqui essa aplicação http://www.soapui.org/.

Para testar webservice é muito facil. E ele fornece estatisticas e coisas.

Esse blog que achei no googlando tem um tutorial. http://testonauta.blogspot.com.br/2011/03/testando-webservices-utilizando-soapui.html.

Mamão com açucar :3 ta me ajudando muito.

Bele… Quanto ao cliente, não tem como ao meu ver pois o XML apenas indicas as portas e caminhos para o servidor e informa que tipo de dado passar como parâmetro. Quem faz as funções é o aplicativo no servidor em si… Se não tiver como vc criar uma maquina virtual com uma cópia do servidor vai ficar difícil testar a aplicação.

M

kinrpg
Entendi.
Meu problema é que não consigo acessar o servidor, então o soapUI, Axis2 e outras ferramentas não servem para esse cenário.
Por isso preciso saber como codificar sem essas ferramentas.
Abraço.

K

Então cara isso eu entendi, foi o que expliquei na ultima frase.
A propria URL WSDL vai copiar um arquivo XML direto do servidor. Então sem acesso ao servidor não há o que fazer. Por isso sugeri você fazer uma maquina virtual onde vc instala seu servidor para poder conectar. Se isso não for possível ai ferro =/

D

Cara eu fiquei dias procurando a Solução para Conectar com WebService (C#) usando o Java

O grande macete é usar a Thread.
Segue .java de teste que criei para demostrar
O meu funcionou certinho.
Lembrando que estou usando a Ksoap 2.6 -> Propredades do Projeto, bluid path -> Adc jar -> seleciona-la

package com.appsiscomobrasonline;

import org.ksoap2.SoapEnvelope;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

import org.ksoap2.serialization.SoapPrimitive;

public class Testes {

public Thread threadObrasEmpresasComTipos = new Thread(){

<a class="mention" href="/u/override">@Override</a>

public void run() {

try {

// Padrao não muda nunca

String NAMESPACE = “<a href="http://tempuri.org/">http://tempuri.org/</a>”;

// Arquivo XMl do seu WebService, Chando abrir seu WebService no Browser vai aparecer um link no browser

// --> vide link The following operations are supported. For a formal definition, please review the Service Description.

// Clicke no Link e pegue o caminho do arquivo xml que abrir esse é a URL

String URL = <a href="http://201.76.37.77/wsSincronizacaoAndroid/SincronizacaoAndroid.asmx?WSDL">http://201.76.37.77/wsSincronizacaoAndroid/SincronizacaoAndroid.asmx?WSDL</a>”;

// sempre é o NAMESPACE + Nome do Método do WebService que você quer chamar

String SOAP_ACTION = <a href="http://tempuri.org/EnviarTabela">http://tempuri.org/EnviarTabela</a>”;

// Metodo do WebService que voce quer chamar

String METHOD_NAME = EnviarTabela;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet = true;

envelope.setOutputSoapObject(request);

// Parametros do Metodo, lembre-se que o C# só encherga as String do Java e Vice-Versa, logo parametros em String

request.addProperty(codUsuarioParam, VariavelParam1);

request.addProperty(codEstadoParam, VariavelParam1);

HttpTransportSE ht = new HttpTransportSE(URL);
ht.call(SOAP_ACTION, envelope);

final SoapPrimitive response = (SoapPrimitive)envelope.getResponse();

final String retornoWs = response.toString();

// Resposta do Metodo do Web Service agora esta armazenada na variavel retornoWs

}

catch (Exception e) {

// Implementar Erro

}

}

};
private boolean ImportarDadosParaServidor()

{

try

{	

threadObrasEmpresasComTipos.start();

}

catch(Exception ex)

{	

threadObrasEmpresasComTipos.stop();

return false;

}
// Aguarda a resposta do WebService

while(threadObrasEmpresasComTipos.isAlive())

{

Aguardar(1000);

}

return true;
}

private void Aguardar(int ms)

{

try { Thread.sleep(ms); }

catch(Exception ex){ return; }

}

}

Criado 2 de agosto de 2012
Ultima resposta 29 de nov. de 2012
Respostas 4
Participantes 3