Webservices.....

365 views
Skip to first unread message

Marlene Carranza

unread,
Oct 20, 2017, 3:04:54 PM10/20/17
to Comunidad de Visual Foxpro en Español
Hola Gente! 
como les va? Espero que muy bien! 
Ya busque en el foro... y vi que se hablo del tema 300 veces... pero no le logro enganchar la vuelta al tema....
Tengo que transmitir unos archivos via webservice a un webservice privado con un usuario y una contraseña. Los XML ya los genere, eso todo bien. 
El tema es que tengo que conectarme con usuario y contraseña y no logro engancharle la vuelta a como hacer esto.... me baje el soapui , el soapsdk y la mar en coche... pero no logro autenticar... yo tengo otras conexiones a webservices mediante dlls que les paso el método que venia en el manual y funcionan perfecto... pero acá no estaría encontrando por donde arrancar......

alguien que me pueda tirar una idea? o algun lugar de donde pueda sacar informacion para poder hacer esto desde VFP.... 

Mil gracias 1
saludos y buen finde!

mapner

unread,
Oct 20, 2017, 4:27:37 PM10/20/17
to Comunidad de Visual Foxpro en Español
Hola Marlene,

Todo web service a consumir debe venir provisto de una documentación de API, ahí te debe indicar la forma de invocar  cada método. Si el ws es una URL que termina con WSDL lo podes hacer con SOAP (pero no todos los ws funcionan con el SOAP 3 provisto con VFP), otra forma de consumir ws es por medio de invocación directa con un objeto HTTP.
Amplia un poco la info a ver si te podemos ayudar.

Saludos

Marlene Carranza

unread,
Oct 20, 2017, 4:48:06 PM10/20/17
to publice...@googlegroups.com
Mmmmmm a ver... estoy medio perdida con esto,,,

El webservice de prueba es:


me dieron un usuario de te...@tracelink.com y una clave...

Con el soapui, arme un proyecto y logre conectarme, marcando la opcion "Authenticate pre-emptively" ,,,, 

Me mire los 350mil videitos de soapui pero sigo sin entender donde cornos meter el user y pass para acceder... o sea... me dijeron que lo tengo que llamar desde mi aplicacion... pero no me funciona... 

En otros webservices con los que trabajo, los datos los mando en el xml o por medio de una dll ....  pero aca estoy dando vueltas hace 2 semanas y no lo agarro!!!

 MIL GRACIAS POR LA RESPUESTA.!! 

Saludos,
--

Marlene Carranza
IT Solutions for Business / Networks and Servers Administrator / Sap NetWeaver Administrator
Microsoft Certified Systems Engineer - CCNA - NSP Cisco Certified

Mail: mbcar...@gmail.com

P Think before Print :) 

mapner

unread,
Oct 20, 2017, 5:54:20 PM10/20/17
to Comunidad de Visual Foxpro en Español
Una forma de probar por fuera de VFP sería que bajes el utilitario SoapUI 
que es un cliente de WS y lo ejecutes en ese ámbito 

Marlene Carranza

unread,
Oct 21, 2017, 10:13:56 AM10/21/17
to Comunidad de Visual Foxpro en Español
Hola! 
Como les habia dicho antes, con el soapui me pude conectar marcando la opcion "Authenticate pre-emptively" ...  el problema es conectarme desde VFP... basicamente eso es lo que no estoy logrando hacer...donde y como meto el usuario en vfp? esa es mi duda...
En el soapui pongo esto y me conecto:


El tema es como me conecto desde VFP

yo estoy haciendo esto  


----------------------------------------------------------------------------------
LOCAL o as MSSOAP.SoapClient30
o = CREATEOBJECT("MSSOAP.SoapClient30")
loException = null
llError=.f.
 
lc_pasword="pass"
 
TRY
    o.MSSoapInit(lcUrl)

* Aca es la duda como envio los datos del user/pass para autenticar    
  
  O.SerialNumberRequest(CreaRequest())
 
CATCH TO loException
   llError = .t.
ENDTRY
 
IF llError
   MESSAGEBOX("Unable to load WSDL file from " + lcUrl)
   return
ENDIF
 
 
RETURN
 
 
 * FUNCTION CreaRequest(tcCiudad, tcPais)
 FUNCTION CreaRequest()
 *---------------------------------------------------
TEXT TO sXMLRequest TEXTMERGE NOSHOW 
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:tracelink:soap">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:serialNumbersRequest>
         <!--Optional:-->
         <SendingSystem>0123456001257</SendingSystem>
         <!--Optional:-->
         <ReceivingSystem>0123456700014</ReceivingSystem>
         <!--Optional:-->
         <IdType>GS1_SER</IdType>
         <!--Optional:-->
         <EncodingType>SGTIN</EncodingType>
         <!--Optional:-->
         <Size>30</Size>
         <!--Optional:-->
         <ObjectKey>
            <!--Optional:-->
            <Name>GTIN</Name>
            <!--Optional:-->
            <Value>00812345678903</Value>
         </ObjectKey>
         <!--Optional:-->
         <RequestRandomizedNumber></RequestRandomizedNumber>
      </urn:serialNumbersRequest>      
   </soapenv:Body>
</soapenv:Envelope>

ENDTEXT 
  RETURN sXMLRequest
 ENDFUNC

------------------------------------------------------------------------

Pero no logro conectarme!! 

Cualquier ayuda es mas que bienvenida! 
muchas gracias!!!!!!!!!!!!!! 


Marlene

mapner

unread,
Oct 21, 2017, 12:18:07 PM10/21/17
to Comunidad de Visual Foxpro en Español
El Soap 3 de MS tiene problemas con algunos WS, te conviene hacerlo con una llamada directa HTTP del tipo

TRY
oHTTP = CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
oHTTP.OPEN("POST", cURL, .F.) && cURL del WS
oHTTP.setRequestHeader("User-Agent", "MP")
oHTTP.setRequestHeader("Content-Type", "text/xml;charset=utf-8")

oHTTP.setRequestHeader("SOAPAction",cAction) && URL del método a invocar

oHTTP.SEND(cRequest) && acá iría el envío del XML
lOk = .T.
CATCH TO loErr
cError = "Error: " + TRANSFORM(loErr.ErrorNo) +  " Mensaje: " + loErr.MESSAGE
ENDTRY
IF lOk
cResponse = oHTTP.responseText
ENDIF

* Saludos


Esteban H.

unread,
Oct 21, 2017, 12:44:23 PM10/21/17
to publice...@googlegroups.com

Hola Marlene.

 

Te iba a aconsejar lo mismo q Mauricio. Él lo puede hacer mejor q yo dado q es muy bueno en esto.

Estuve mirando x el SoapUI tu link de acceso al WS y en ningún lado figura p enviar el usuario y password, así q en el código debajo adjuntado x Mauricio debes enviarlo seguramente en un SetRequestHeader.

Es raro q no te hayan dado algún pdf de documentación sobre este WS.

Busca en internet ayuda sobre “'Msxml2.ServerXMLHTTP.6.0'” p entender como pasar el usuario y password junto con el xml.

 

Saludos

 

Esteban

Carlos Vargas

unread,
Oct 21, 2017, 2:10:46 PM10/21/17
to Comunidad de Visual Foxpro en Español
intenta asi por favor.

lc_pasword="pass"
 
TRY
    o.MSSoapInit(lcUrl,lc_user,lc_pasword)

Marlene Carranza

unread,
Oct 23, 2017, 11:30:15 AM10/23/17
to Comunidad de Visual Foxpro en Español
hola! 

Eso ya lo habia probado y no pasa nada :(

Volvi a requerir documentacion y me pasaron lo siguiente:

 

 

Michaelis.MockService service = new Michaelis.MockService();

 

// Create the network credentials and assign

// them to the service credentials

NetworkCredential netCredential = new NetworkCredential("Inigo.Montoya", "Ykmfptd");

Uri uri = new Uri(service.Url);

ICredentials credentials = netCredential.GetCredential(uri, "Basic");

service.Credentials = credentials;

 

// Be sure to set PreAuthenticate to true or else

// authentication will not be sent.

service.PreAuthenticate = true;

 

// Make the web service call.

service.Method();


Obvio que pruebo con eso y no va para ningun lado...... creo que es un ejemplo de c#........ eso funcionaria si lo tuviese en VFP.... necesitaria un traductor!!! jajaja

GRACIAS POR TODA LA AYUDA!

Sigo participando.. cualquier sugerencia es siempre bienvenida! :) 

Saludos,


Marlene
Reply all
Reply to author
Forward
0 new messages