FWHX y Webservers

User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

FWHX y Webservers

Post by jose_murugosa »

Necesito enviar lo siguiente a un web server:

Code: Select all

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:

Code: Select all

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
FWH + Harbour + Bcc7. Una seda!
User avatar
quique
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am
Contact:

Post by quique »

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
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post by jose_murugosa »

[quote="quique"]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
[quote]

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
FWH + Harbour + Bcc7. Una seda!
User avatar
quique
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am
Contact:

Post by quique »

perdón, me equivoque, es ftp, no http

ftp://ftp.quiquesoft.com/webserv.zip
Saludos
Quique
User avatar
clemerson
Posts: 58
Joined: Fri Mar 10, 2006 8:13 pm
Location: Brazil
Contact:

Re: FWHX y Webservers

Post by clemerson »

jose_murugosa,

conseguiu funcionar ?
jose_murugosa wrote:Necesito enviar lo siguiente a un web server:

Code: Select all

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:

Code: Select all

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?
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
User avatar
clemerson
Posts: 58
Joined: Fri Mar 10, 2006 8:13 pm
Location: Brazil
Contact:

Post by clemerson »

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 :-)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Re: FWHX y Webservers

Post by thefull »

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__)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Post by thefull »

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__)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Post by thefull »

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__)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Post by thefull »

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__)
Post Reply