ASP clássico consumindo webservice feito em java

11 respostas
J

Pessoal não entendo de asp e to com uma missão de consumir um webservice no asp feito em java, eu fiz o webservice com axis2 e consegui consumir com java, o problema é fazer a encrenca desse ASP(versão antiga, muito antiga, o mais mais medieval que existe :lol: )

eu consegui isso:

dim strUrlWS
 		strUrlWS = "http://172.16.6.253:8080/CBE/services/ConsultaProtocolo?wsdl"
		Set objSoap = Server.CreateObject("MSSOAP.SoapClient30")
		objSoap.ClientProperty("ServerHTTPRequest") = True
		objSoap.mssoapinit strUrlWS, "ConsultaProtocolo"
   //linha 36 do erro, ConsultaProtocolo eh meu servico
		
		dim Retorno
		Retorno = objSoap.consultaDeclaracao(VProtocolo,VCnpjCpf,VIndPerfil) 
		
		response.Write Retorno

mas ele traz esse resultado:

WSDLReader error '80020009'

WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: The operation timed out HRESULT=0x1: Incorrect function. - WSDLReader:Loading of the WSDL file failed HRESULT=0x80070057: The parameter is incorrect. - Client:One of the parameters supplied is invalid. HRESULT=0x80070057: The parameter is incorrect. 
funcVBS.asp, line 36

alguém poderia me ajudar, ou mais caridosamente se tiver um código em asp, já procurei na net, mas não funciona.
Agradeços a todos pela atenção.

11 Respostas

T

Quando tive de fazer isso, como o MS SOAP Client é muito velho e não entende as coisas que foram criadas por web services atuais, eu simplesmente fiz o seguinte:

a) Solicitei ao cliente que se instalasse o .NET Framework 2.0 e 3.5 na máquina com ASP
b) Criei uma classe em C# que consumia esse web service, e que expunha uma interface COM - para tanto, usei o Visual Studio (2005 ou 2008)
c) Registrei essa classe (não no COM+, mas com COM mesmo, usando REGASM). Assim (com um bocado de esforço) foi possível fazer o ASP chamar uma classe COM que na verdade é um componente .NET.

Detalhes sangrentos:

  • Você tem de tomar cuidado com a interface do seu web service em Java. Talvez você tenha de tentar alterar a interface do seu web service até que o wizard do C# pare de reclamar de alguma coisa que ele não conseguiu entender no seu WSDL.
  • Não sei se é possível registrar a classe .NET no COM+. Quando tentei isso, só consegui fazer com que outras classes .NET conseguissem enxergar a classe .NET, mas não uma página ASP ou um programa VB 6.0. Deve haver alguma mágica que não sei fazer.
P

Voce esta passando os parametros de forma correta?,

The parameter is incorrect. - Client:One of the parameters supplied is invalid. HRESULT=0x80070057: The parameter is incorrect.

Aqui tem implementação legal em ASP:
http://imasters.uol.com.br/artigo/7348

J

thingol:
Quando tive de fazer isso, como o MS SOAP Client é muito velho e não entende as coisas que foram criadas por web services atuais, eu simplesmente fiz o seguinte:

a) Solicitei ao cliente que se instalasse o .NET Framework 2.0 e 3.5 na máquina com ASP
b) Criei uma classe em C# que consumia esse web service, e que expunha uma interface COM - para tanto, usei o Visual Studio (2005 ou 2008)
c) Registrei essa classe (não no COM+, mas com COM mesmo). Assim (com um bocado de esforço) foi possível fazer o ASP chamar uma classe COM que na verdade é um componente .NET.

Detalhes sangrentos:

  • Você tem de tomar cuidado com a interface do seu web service em Java. Talvez você tenha de tentar alterar a interface do seu web service até que o wizard do C# pare de reclamar de alguma coisa que ele não conseguiu entender no seu WSDL.
  • Não sei se é possível registrar a classe .NET no COM+. Quando tentei isso, só consegui fazer com que outras classes .NET conseguissem enxergar a classe .NET, mas não uma página ASP ou um programa VB 6.0. Deve haver alguma mágica que não sei fazer.

UI :cry: , se foi difícil assim pra você Master Thingol, imagina pra um novato que nunca mexi com asp, e pior com o antigo, o problema não é nem ter que aprender, é o tempo, que é sempre pra ontem. E ainda vi a possibilidade de instalar o .NET 2.0 é menor que 0, aqui pra ter acesso a um diretório semi-público é em torno de várioas meses e depois de passar pelo LULA, imagina instalar, quase caíram da mesa. Cliente…só querem a solução…

:cry:

T

Se o servidor for Windows 2003 ou 2008, então o .NET Framework está instalado e você não precisa se preocupar. Que servidor está instalado?

J

thingol:
Se o servidor for Windows 2003 ou 2008, então o .NET Framework está instalado e você não precisa se preocupar. Que servidor está instalado?

2000

T

Se você fosse um “master in C++” poderia tentar usar o GSOAP, e criar um componente ActiveX em C++ que fosse chamado pelo ASP.
Mas acho que não é esse o seu caso :stuck_out_tongue:

De qualquer forma, se você conseguir fazer um web service como REST e não SOAP (como é o caso do tal exemplo que o Pedrosa lhe passou) então fica um pouco mais fácil*, porque em última instância você só precisa enviar uma requisição http (POST ou GET dependendo do modelo do web service REST que você está usando).

  • Fácil é modo de dizer :stuck_out_tongue:
J

Pedrosa:
Voce esta passando os parametros de forma correta?,

The parameter is incorrect. - Client:One of the parameters supplied is invalid. HRESULT=0x80070057: The parameter is incorrect.

Aqui tem implementação legal em ASP:
http://imasters.uol.com.br/artigo/7348

eu tirei os parâmetros, deixei so uma resposta teste, mesmo assim deu mesmo erro, ou seja, reclamou sendo que nem tem parâmetro a ser passado.

valeu pelo link, to trabalhando nessa possiblidade agora.

J

thingol:
Se você fosse um “master in C++” poderia tentar usar o GSOAP, e criar um componente ActiveX em C++ que fosse chamado pelo ASP.
Mas acho que não é esse o seu caso :stuck_out_tongue:

não é e ta longe, longe mesmo :stuck_out_tongue:

é estou indo nesse rumo agora, seja o Deus quiser :smiley:

se eu conseguir resolver, coloca a solução aqui…

Obrigado pela ajuda…

P

Voce poderia disponibilizar uma Resposta JSON ou inves de wsdl e consumir via JavaScript num modelo de ws rest.

P

O ASP poderia consumir um serviço REST no Java, de uma olhada no Jersey :wink:

A

Javabuntu:
Pessoal não entendo de asp e to com uma missão de consumir um webservice no asp feito em java, eu fiz o webservice com axis2 e consegui consumir com java, o problema é fazer a encrenca desse ASP(versão antiga, muito antiga, o mais mais medieval que existe :lol: )

eu consegui isso:

dim strUrlWS
 		strUrlWS = "http://172.16.6.253:8080/CBE/services/ConsultaProtocolo?wsdl"
		Set objSoap = Server.CreateObject("MSSOAP.SoapClient30")
		objSoap.ClientProperty("ServerHTTPRequest") = True
		objSoap.mssoapinit strUrlWS, "ConsultaProtocolo"
   //linha 36 do erro, ConsultaProtocolo eh meu servico
		
		dim Retorno
		Retorno = objSoap.consultaDeclaracao(VProtocolo,VCnpjCpf,VIndPerfil) 
		
		response.Write Retorno

mas ele traz esse resultado:

WSDLReader error '80020009'

WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: The operation timed out HRESULT=0x1: Incorrect function. - WSDLReader:Loading of the WSDL file failed HRESULT=0x80070057: The parameter is incorrect. - Client:One of the parameters supplied is invalid. HRESULT=0x80070057: The parameter is incorrect. 
funcVBS.asp, line 36

alguém poderia me ajudar, ou mais caridosamente se tiver um código em asp, já procurei na net, mas não funciona.
Agradeços a todos pela atenção.

Javabuntu, tente isso sua linha 36 (linha 5 do seu exemplo)

Call objSoap.mssoapinit(strUrlWS, "ConsultaProtocolo")
Criado 14 de janeiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 11
Participantes 5