Ayuda con autenticación SOAP

Ayuda con autenticación SOAP

Postby Carlos Mora » Wed Sep 17, 2014 8:47 am

Hola gente,

estoy tratando de usar un servicio WEB via MSSoap y Harbour, y tengo todo bastante cocinado con excepción de un detalle: autenticación.
El código es el que sigue, pero me falta la autenticación porque no se como poner el usuario y la contraseña, no encuentro el equivalente de las instrucciones de VB

el codigo
Code: Select all  Expand view

      TRY
         oSoap := CreateObject( "MSSOAP.SoapClient30" )
         oSoap:msSoapInit( "http://localhost:8089/open/services/AbsenceFileService?wsdl" )
         // oSoap:msSoapInit( "http://user:passw@localhost:8089/open/services/AbsenceFileService?wsdl" )
         // si trato de poner el usuario en la URL, falla la funcion msSoapInit
         oSoap:ClientProperty("ServerHTTPRequest")
         // en VBA el usuario y la contraseña se ponen así
         // oSoap:ConnectorProperty("AuthUser" ) = 'user'
         // oSoap:ConnectorProperty("AuthPassword") = 'passwd'
         // Y es lo que no he sabido reemplazar con Harbour
         // Cosas que he probado:

         oSoap:ConnectorProperty:AuthUser:= 'user'
         // Argument Error

         oSoap:ConnectorProperty:AuthUser( 'user' )
         // Argument Error

         oSoap:ConnectorProperty("AuthUser", 'user' )
         // Argument Error

         oSoap:ConnectorProperty("AuthUser") := 'user'
         // No compila, invalid lValue

         oSoap:ConnectorProperty("AuthUser"):Value := 'user'
         // No exported variable

         oSoap:AuthUser:= 'user'
         // No exported variable

         MsgInfo( ValType( oSoap:ConnectorProperty("AuthUser") ) ) // -> '' en blanco, no tiene tipo, ni siquiera 'U'

         oSoap:ConnectorProperty("AuthPassword"):Value := 'passwd'
         // Not exported variable

      CATCH oError
         MsgStop( oError )
         Quit
      END TRY

 


La cosa es esa: ¿como se escribe el equivalente del código VB "oSoap:ConnectorProperty("AuthUser" ) = 'user'" ?

Hay alguna otra forma de usar SOAP ?

He buscado en el foro pero no he encontrado nada relacionado con autenticación.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Ayuda con autenticación SOAP

Postby benjiben143 » Wed Sep 17, 2014 4:38 pm

Hola carlos buenos dias


aver si te sirve este ejemplo
y en ejemplo Vb que pones las propiedades te lo genera ya el vb y en fivewin ay que hacerlo paso a paso

en este ejemplo se conecta a un servidor se le da el usuario y contraseña y la forma de llamarlo es consultando tu url ayi vienen todas las propiedadades
si el usuario es bueno madan el servicio si no regresa que el usuario no existe

saludos



Code: Select all  Expand view

#include "FiveWin.ch"

Function Main()
local url
local doc, ohttp, response, cxml
URL:="https://www.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"
doc:=CreateObject( "MSXML2.DOMDocument" )
ohttp:=createobject( "Microsoft.XMLHTTP")

ohttp:Open( "POST" , URL , .F. )
ohttp:SetRequestHeader("Content-Type" ,"text/xml; charset=utf-8")
Ohttp:SetRequestHeader( "SOAPAction" , "getStatus" )

//autenticar(string,string) funcion que se encuntra en el servidor WS


cxml:=""    //'<?xml version="1.0" encoding="UTF-8"?>'
cxml:=cxml+'<soapenv:Envelope xmlns:ser="http://service.sunat.gob.pe"'+chr(13)
cxml:=cxml+'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"'+CHR(13)
cxml:=cxml+'xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">'+CHR(13)
cxml:=cxml+"<soapenv:Header>"
cxml:=cxml+"<wsse:Security>"
cxml:=cxml+"<wsse:UsernameToken>"
cxml:=cxml+"<wsse:Username>xxxx</wsse:Username>"
cxml:=cxml+"<wsse:Password>xxxx</wsse:Password>"
cxml:=cxml+"</wsse:UsernameToken>"
cxml:=cxml+"</wsse:Security>"
cxml:=cxml+"</soapenv:Header>"
cxml:=cxml+"<soapenv:Body>"
cxml:=cxml+"<ser:getStatus>"
cxml:=cxml+"<rucComprobante>xxxxxx</rucComprobante>"
cxml:=cxml+"<tipoComprobante>xxxx</tipoComprobante>"
cxml:=cxml+"<serieComprobante>xxxx</serieComprobante>"
cxml:=cxml+"<numeroComprobante>xxxx</numeroComprobante>"
cxml:=cxml+"</ser:getStatus>"
cxml:=cxml+"</soapenv:Body>"
cxml:=cxml+"</soapenv:Envelope>"
doc:LoadXML( cXml ) //carga el documento a xml
? cxml
ohttp:send(doc:xml)
response:= ohttp:responseText

?response

return .t.

 
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
benjiben143
 
Posts: 114
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Ayuda con autenticación SOAP

Postby Carlos Mora » Thu Sep 18, 2014 7:34 am

Hola benjiben,

muy bueno tu ejemplo, voy a ahacer pruebas a ver si puedo escribir manualmente toda la llamada xml al servicio.

Muchas gracias,
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 66 guests