WEB SERVICE INVOCADO PELO VB6
Bom, entrando no meu problema,
Eu preciso de invocar um webservice em um aplicativo feito em vb6. Neste momento eu estou começando, e pelas experiencias que eu fiz, ainda nao consegui fazer a chamada de um WB com sucesso.
Alguem poderia ajudar com os passos base para fazer essa tarefa?
Eu ja tentei seguir este [Ô]tutorial[Ô]: http://www.freevbcode.com/ShowCode.asp?ID=7611
para ligar neste webservice: http://ws.cdyne.com/WeatherWS/Weather.asmx?op=GetCityWeatherByZIP
O problema que estou tendo é o XML de resposta. Quando eu testo no site, não ocorre nenhum problema, mas no aplicativo tenho esse XML de Resposta:
Citação:version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô]?>
<soap:Envelope xmlns:soap=[Ô]http://www.w3.org/2003/05/soap-envelope[Ô] xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô] xmlns:xsd=[Ô]http://www.w3.org/2001/XMLSchema[Ô]>
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:e[Ô]
Alguem pode dar uma ajuda a este noobie?
Agradeço desde ja as respostas.
Eu fiz algumas modificações, mas ainda não resolvi o meu problema.
Ja consigo criar um XML de pedido e obter uma resposta, no entanto parece que o parametro que preencho no pedido vai vazio...
este é o meu código:
Citação:Set Connector = New HttpConnector30
[ô]Prepare the Connector to talk to the SOAP Server
Connector.Property([Ô]EndPointURL[Ô]) = cURL
Call Connector.Connect
Connector.Property([Ô]SoapAction[Ô]) = cSOPAaction [ô]& [Ô]DFSDFS![Ô]
Call Connector.BeginMessage
[ô]Associate your Serializer with your Connector.
Set Serializer = New SoapSerializer30
Serializer.Init Connector.InputStream
[ô]Start the SOAP Envelope and specify the Encoding and XML-Schema.
Serializer.StartEnvelope
Serializer.SoapNamespace [Ô]xsi[Ô], cXSI
Serializer.SoapNamespace [Ô]xsd[Ô], cXSD
Serializer.SoapNamespace [Ô]soap[Ô], cSOAP
[ô]Start the body of the message - the root element is always the Service URI and method.
Serializer.StartBody
[ô]Serializer.StartElement cMethod, cURI, , [Ô]method[Ô]
Serializer.startElement cMethod, cURI
Serializer.startElement [Ô]mile[Ô]
[ô]Serializer.SoapAttribute [Ô]type[Ô], , [Ô]xsd:string[Ô], [Ô]xsi[Ô]
Serializer.WriteString 16840
Serializer.endElement
[ô]End the root element, the body and the envelope.
Serializer.endElement
Serializer.EndBody
Serializer.EndEnvelope
[ô]Ending the message causes it to be sent.
Connector.EndMessage
[ô]Load the result into the Reader.
Set Reader = New SoapReader30
Reader.Load Connector.OutputStream
Estou tentando ligar-me a este WS: http://www.avowlabs.com/webservices/AvowGEOCalculator/AvowGEOCalculator.asmx
Metodo: MileToKilometer
Obrigado pela ajuda
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=6742
Citação::
Quer um conscelho, cria uma DLL em vb.net muito mais facil!
DUHHH, é exatamente esse cenario que eu pretendo evitar, aqui estamos trabalhando num ambiente bancario, onde qualquer mudança tem muita resistencia... e a preocupação deles é ter q garantir o funcionamento e segurança de tudo o que está implementado a uma serie de anos...
a opçao DLL .net seria o ultimo recurso :(
@RICARDOTOM, valeu pelo link, vou ver como está feito o acesso ao webservice e vou adaptar para a minha realidade.
Valeu pelas respostas galera, vou tentar decompor o XML e ver pq ele aparenta estar vazio.
Obrigado
Em desespero de causa estamos tentando com o .net para depois ser chamado pelo VB6, alguem pode dar umas luzes como instanciar o dll do .net?
já li alguns artigos falando em converter a minha classe para COM, mas eu nunca fiz isso... é necessário esse passo?
Qualquer ajuda ou luz que possam dar neste assunto, será muito bem vinda.
Obrigado
Agora estou com um problema diferente.
Afinal não vou fazer uma aplicação vb standalone, vou fazer uma .ddl em vb6 que vai invocar a dll/tlb do .net o meu problema é que quando invoco o construtor do objeto do .net estou tendo o erro de overflow:
Error Type:
COMAutorizDebitoConta (0x800A0006) [ô]Este é o objecto que eu criei no vb6
Overflow
/hb_v31/DD/DD_4100.asp, line 130 [ô]O erro ocorre ao fazer new do objecto da dll do .net
Parece que ou a dll vb6 não está embutindo/encapsulando a dll/tlb que eu fiz no .net isso é normal acontecer ou é necessário registrar no servidor as 2 dll?
Ja tentei registrar no servidor a dll/tlb que fiz no .net, a dll que eu fiz no vb6 está registrada e não sei mais o que tentar.
Alguem pode dar mais umas luzes?
Obrigado
Respondendo a mim mesmo.
Bastava eu registrar a dll como /codebase
No meu caso: regasm c:\mts\CallSibsWS.dll /tlb:c:\mts\CallSibsWS.tlb /codebase