FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FWHX y Webservers
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
FWHX y Webservers
Posted: Thu Jul 17, 2008 01:10 PM
Necesito enviar lo siguiente a un web server:

olicitud: 

POST /inacapi/cargartablas.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://Server/inacapi/cargartablas/Producer"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Producer xmlns="http://Server/inacapi/cargartablas">
      <Producers>
        <Producer>
          <ProducerCode>int</ProducerCode>
          <ProducerName>string</ProducerName>
          <ProducerRUC>long</ProducerRUC>
          <DepartmentCode>int</DepartmentCode>
          <RegType>int</RegType>
        </Producer>
        <Producer>
          <ProducerCode>int</ProducerCode>
          <ProducerName>string</ProducerName>
          <ProducerRUC>long</ProducerRUC>
          <DepartmentCode>int</DepartmentCode>
          <RegType>int</RegType>
        </Producer>
      </Producers>
    </Producer>
  </soap:Body>
</soap:Envelope>


a fin de recibir esta respuesta:

Respuesta:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ProducerResponse xmlns="http://Server/inacapi/cargartablas">
      <ProducerResult>int</ProducerResult>
    </ProducerResponse>
  </soap:Body>
</soap:Envelope>


Alguien ha trabajado con web servers y me puede ayudar con alguna pista de como hacerlo?
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM
FWHX y Webservers
Posted: Thu Jul 17, 2008 02:54 PM
Con xHabour tienes un excelente ejemplo

xharbour\samples\sitesvr\

yo hice un servidor web http://ftp.quiquesoft.com/webserv.zip y me basé en el, fivewin tiene

fwh\source\classes\twebserv.prg

tal vez alguno de los dos te de una idea, xharbour también tiene una una librería, creo que es GTCGI, la cual toda la salida la manda como salida para web, es excelente para crear CGIs sin tener que preocuparte tu por ello.
Saludos

Quique
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
FWHX y Webservers
Posted: Thu Jul 17, 2008 08:41 PM
quique wrote:Con xHabour tienes un excelente ejemplo

xharbour\samples\sitesvr\

yo hice un servidor web http://ftp.quiquesoft.com/webserv.zip y me basé en el


No he podido bajar este archivo, quisieras por favor publicar un nuevo link.

Gracias desde ya, y por responder a mi post.
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM
FWHX y Webservers
Posted: Thu Jul 17, 2008 09:09 PM
perdón, me equivoque, es ftp, no http

ftp://ftp.quiquesoft.com/webserv.zip
Saludos

Quique
Posts: 58
Joined: Fri Mar 10, 2006 08:13 PM
Re: FWHX y Webservers
Posted: Wed Sep 03, 2008 01:54 PM
jose_murugosa,

conseguiu funcionar ?

jose_murugosa wrote:Necesito enviar lo siguiente a un web server:

olicitud: 

POST /inacapi/cargartablas.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://Server/inacapi/cargartablas/Producer"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Producer xmlns="http://Server/inacapi/cargartablas">
      <Producers>
        <Producer>
          <ProducerCode>int</ProducerCode>
          <ProducerName>string</ProducerName>
          <ProducerRUC>long</ProducerRUC>
          <DepartmentCode>int</DepartmentCode>
          <RegType>int</RegType>
        </Producer>
        <Producer>
          <ProducerCode>int</ProducerCode>
          <ProducerName>string</ProducerName>
          <ProducerRUC>long</ProducerRUC>
          <DepartmentCode>int</DepartmentCode>
          <RegType>int</RegType>
        </Producer>
      </Producers>
    </Producer>
  </soap:Body>
</soap:Envelope>


a fin de recibir esta respuesta:

Respuesta:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ProducerResponse xmlns="http://Server/inacapi/cargartablas">
      <ProducerResult>int</ProducerResult>
    </ProducerResponse>
  </soap:Body>
</soap:Envelope>


Alguien ha trabajado con web servers y me puede ayudar con alguna pista de como hacerlo?
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
FWHX y Webservers
Posted: Wed Sep 03, 2008 02:23 PM

Jose,

Basándome en las pruebas que he hecho hoy y que he publicado en:

http://forums.fivetechsoft.com/viewtopic.php?t=12514

creo que usar el activex "shell.explorer" puede ser el camino más sencillo y rápido para hacerlo :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 58
Joined: Fri Mar 10, 2006 08:13 PM
FWHX y Webservers
Posted: Wed Sep 03, 2008 02:39 PM
sabe se funciona com HTTPS ?

https://200.214.130.41:9443/farmaciahomologa/services

Clemerson

Antonio Linares wrote:Jose,

Basándome en las pruebas que he hecho hoy y que he publicado en:

http://forums.fivetechsoft.com/viewtopic.php?t=12514

creo que usar el activex "shell.explorer" puede ser el camino más sencillo y rápido para hacerlo :-)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
FWHX y Webservers
Posted: Wed Sep 03, 2008 08:56 PM

Clemerson,

Estamos haciendo pruebas. Por favor revisa los nuevos posts en:

http://forums.fivetechsoft.com/viewtopic.php?t=12514

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: FWHX y Webservers
Posted: Thu Sep 04, 2008 08:30 AM

Lo que estas intentado enviar es a traves de un protocolo conocido como SOAP.

Tienes 2 caminos.
1.- Sencillo, usando un ActiveX de SOAP de M$. Busca en los foros sobre SOAP. La respuesta tambien ya tendrias simplemente un xml.

2.- Montas tu todo a traves de DOM, mucho mas laborioso, porque tu eres el encargado de construir el protocolo SOAP.
La respuesta TAMBIEN deberias tratarla y quitar del XML todo rastro del protocolo SOAP.

Lo que me extraña es que no te hallan informado sobre que method del WebService tienes que ejecutar y que WSDL tienes que apuntar.

Eso es lo primero que deberías saber, URL a donde apuntar y method( Parametro ) que ejecutarás.

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
FWHX y Webservers
Posted: Thu Sep 04, 2008 09:35 AM

Clemerson,

Esta funcionando correctamente con HTTPS :-)

Por favor revisa los nuevos posts en:

http://forums.fivetechsoft.com/viewtopic.php?t=12514

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
FWHX y Webservers
Posted: Thu Sep 04, 2008 10:30 AM
Antonio Linares wrote:Clemerson,

Esta funcionando correctamente con HTTPS :-)

Por favor revisa los nuevos posts en:
http://forums.fivetechsoft.com/viewtopic.php?t=12514


Al igual meto la pata, pero ¿ esto que tiene que ver con Web Services y la pregunta inicial ?

Los links apuntan a usar el Shell.Explorer de Windows.....
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
FWHX y Webservers
Posted: Thu Sep 04, 2008 12:46 PM

Rafa,

Lo que hemos estado investigando es como enviar información a servidores seguros (y no seguros) desde una aplicación en FWH y a como poder recoger respuestas de dichos servidores, usando el Shell.Explorer.

Según la wikipedia, estaría dentro de los "WebServices" :-)

"A 'Web service' (also Web Service) is defined by the W3C as "a software system designed to support interoperable machine-to-machine interaction over a network""

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
FWHX y Webservers
Posted: Thu Sep 04, 2008 10:12 PM

Pero si te fijas , el protocolo es SOAP, o al menos, creo entenderlo asi.
¿ Quieres decir que el shell.explorer usa SOAP para la comunicacion ? Déjame que lo dude ;-)

De todas maneras, creo que la pregunta inicial no es muy especifica...

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
FWHX y Webservers
Posted: Thu Sep 04, 2008 11:13 PM

Rafa,

Podrías mostrarnos algún ejemplo sencillo de uso de SOAP ?

Es algo que seguro te agradeceríamos muchos :-)

Gracias!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
FWHX y Webservers
Posted: Fri Sep 05, 2008 08:37 PM
Antonio Linares wrote:Rafa,

Podrías mostrarnos algún ejemplo sencillo de uso de SOAP ?

Es algo que seguro te agradeceríamos muchos :-)

Gracias!


Antonio, creo que por los foros ya se reportaron la implementación de SOAP, tanto usando el SDK de M$ como a pelo.

No tiene ningun misterio, es tan sencillo como realizar una llamada a un method de una clase cualquiera, pero... aqui esta la gracia, la ejecucion de ese method es realizado en el servidor, que te brinda ese servicio, por eso el nombre del Web Services, es decir, Servicios Web.

SOAP unicamente es un protocolo, al igual que el RCP, que lo único que hace es envolver nuestro XML.

Imaginar que 'alguien' nos informa que disponemos de un WebServices, que lo que hace es brindarnos la oportunidad de sumar 2 numeros. ( Es un ejemplo )

Nosotros lo único que tenemos que hacer será;

1.- Crear el objeto Soap Client.
oSoapClient := CreateObject( "MSSOAP.SoapClient" )

2.- Inicializarlo. Esto es muy importante, y fijaos al final.
oSoapclient.MsSoapInit("http://www.uno.es/WebService/suma.php?wsdl")

3.- Mensaje que enviaremos al servidor
cXml := <?xml version="1.0" encoding="UTF-8"?>
<PETICION id="SUMA">
<LPARAMS>
<PARAM id="NUMBER1" tipo="int" valor=10/>
<PARAM id="NUMEBR2" tipo="int"valor=5 ></PARAM>
</LPARAMS>
</PETICION>


Ahora por arte de magia, tenemos un objeto que nos permite llamar a methods que serán ejecutados por el SERVIDOR WEB!
Esto es tremendo;

cResultado := oSoapClient:Suma( cXml )

Es decir, en la parte servidora , puede ser que este realizado con PHP , JAVA, etc... sabe que tiene que ejecutar el method SUMA y los parametros vienen dados en el XML.

Desconozco si es posible hacer;
oSoapClient:Suma( 10, 5 ), ya lo preguntaré, porque contra los que he conectado son a traves de paso de parametros simpre en formato XML.

Esto es asi de simple realizandolo a traves de SDK SOAP de M$.
El problema es que los señores de M$ les a dado por no dar más soporte al protocolo SOAP, nativamente, pero si que lo dan a traves de .NET.

En este post, se puede observar otra manera de usar el protocolo SOAP, usando DOMDocument y XMLHTTP
http://www.fivetechsoft.com/forums/view ... light=soap

Os dejo un extracto;
doc = CreateObject("MSXML2.DOMDocument")
http = CreateObject("MSXML2.XMLHTTP")
http.Open("POST", "http://desweb1:8001/portafolio/portafolio", .F.)
http.SetRequestHeader("SOAPAction", "enviaArchivoWebService")
http.SetRequestHeader("Content-Type", "text/xml")

**carga el archivo

xml = fnArmaCadXml("A", "0091", "XXXX", "142", lcInFile64, "CDDEmbargoM5.htm")

doc.LoadXML(xml)

http.Send(doc.xml)

res = CreateObject("MSXML2.DOMDocument")
response = http.responseText

Como podeis observar, la complejidad de la segunda opcion,
si habeis visto el enlace, no resulta del todo fácil, más bien,
es un tremendo engorro.

¿ A quedado un pelín más claro, alguna duda ?
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)