WEB SERVICE INVOCADO PELO VB6

KARI0CA 17/08/2010 13:16:28
#350514
Alô galera, este é o meu primeiro post neste forum que me pareceu muito bom e completo!

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.
NETMANIA 20/08/2010 10:29:17
#350772
Você está está usando o SOAP Tool Kit 3 para se comunicar com o Webservice?
KARI0CA 20/08/2010 11:24:20
#350778
Exacto, MS SOAP Type Library 3.0.

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
DUHHH 20/08/2010 11:31:43
#350781
Quer um conscelho, cria uma DLL em vb.net muito mais facil!
RICATOM 20/08/2010 11:45:24
#350784
Voce pode ler o XML usando o msxml4.dll (Microsoft XML), veja o link abaixo, ele é para pesquisar Cep online mas da para adaptar perfeitamente para sua necessidade

http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=6742
KARI0CA 20/08/2010 13:04:48
#350792
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
KARI0CA 23/08/2010 11:31:05
#350980
Bom galera,

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
TECLA 23/08/2010 11:38:50
#350983
KARI0CA 30/08/2010 11:24:11
#351699
Valeu TECLA, deu pra ter uma ideia legal de como encaminhar as coisas aqui.

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
Tópico encerrado , respostas não são mais permitidas