FWHX y Webservers

FWHX y Webservers

Postby jose_murugosa » Thu Jul 17, 2008 1:10 pm

Necesito enviar lo siguiente a un web server:

Code: Select all  Expand view
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  Expand view
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
jose_murugosa
 
Posts: 1144
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Postby quique » Thu Jul 17, 2008 2: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
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby jose_murugosa » Thu Jul 17, 2008 8:41 pm

[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
jose_murugosa
 
Posts: 1144
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Postby quique » Thu Jul 17, 2008 9:09 pm

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

ftp://ftp.quiquesoft.com/webserv.zip
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: FWHX y Webservers

Postby clemerson » Wed Sep 03, 2008 1:54 pm

jose_murugosa,

conseguiu funcionar ?

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

Code: Select all  Expand view
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  Expand view
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
clemerson
 
Posts: 58
Joined: Fri Mar 10, 2006 8:13 pm
Location: Brazil

Postby Antonio Linares » Wed Sep 03, 2008 2: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby clemerson » Wed Sep 03, 2008 2: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 :-)
User avatar
clemerson
 
Posts: 58
Joined: Fri Mar 10, 2006 8:13 pm
Location: Brazil

Postby Antonio Linares » Wed Sep 03, 2008 8: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWHX y Webservers

Postby thefull » Thu Sep 04, 2008 8: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__)
User avatar
thefull
 
Posts: 729
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Postby Antonio Linares » Thu Sep 04, 2008 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby thefull » 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__)
User avatar
thefull
 
Posts: 729
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

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

Postby thefull » 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__)
User avatar
thefull
 
Posts: 729
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

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

Postby thefull » Fri Sep 05, 2008 8: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__)
User avatar
thefull
 
Posts: 729
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Next

Return to FiveWin para Harbour/xHarbour

Who is online

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