Envio de script XML con oHTTP.Open("GET", "http://direccion.asmx?wsdl/metodo?variable="+cRequest, .t.)

817 views
Skip to first unread message

TurbiSoft

unread,
Sep 10, 2010, 2:16:39 PM9/10/10
to Comunidad de Visual Foxpro en Español
Saludo, estoy tratando de enviar un script xml con el objeto
MSXML2.XMLHTTP, utilizando el comadno Get, pero no he podido, o mejor
dicho, parece que no llega el parametro o no lo interpreta
correctamente.

He echo esto mismo antes, pero con el comando POST, con el GET, los
parametros se concatenan en la direccion del URL, y el webservice no
recibe envios con el Post.


Cualquier sugerencia u orientacion sera bienvenida.

Hugo Carlos Aguilar Zapata

unread,
Sep 10, 2010, 2:57:52 PM9/10/10
to publice...@googlegroups.com
hace unos años usaba el mismo objeto para mandar datos a traves de un servidor web no lo procesaba un websevice, sino un objeto COM en VFP, lo que veo de diferencia es el paramtro despues del URL, creo que es la Asincronia yo lo ponia en falso y en tu ejemplo esta verdadero.

StrReq = "usuario=" + cUser + "&pass=" + cPass + "&sucursal=" + cSuc + "&area=" + nArea +  "&fechap=" + ALLT(STR(cAño)) + "&patente=" + lcPatente +  "&aduana=" + lcaduana + "&secc=" + right(cAduana,1) + "&accion=" + lcAccion + "&ipvalid=" + cIPAdd + "&numerop=" + ALLT(STR(librop.numero))
   
oXMLHTTPsave = CREATEOBJECT( "MSXML2.ServerXMLHTTP.4.0" )   
oXMLHTTPsave.open( "GET",;
    CSvrHTTP + "intranet/opera/controlp/resultapwin.asp?" + StrReq ,  .F. )       
oXMLHTTPsave.send()
pcResPed = oXMLHTTPsave.ResponseText

Aqui unos links sobre el tema
http://cephas.net/blog/2003/06/17/msxml2xmlhttp40/
http://www.vbforums.com/archive/index.php/t-417636.html
http://bytes.com/topic/asp-classic/answers/850952-using-msxml2-serverxmlhttp-4-0-get-form-value

Espero y te sean de utilidad
Message has been deleted

TurbiSoft

unread,
Sep 10, 2010, 3:35:47 PM9/10/10
to Comunidad de Visual Foxpro en Español
Saludo Hugo, gracias por tu respuesta, e intentado con el parametro
tanta falso como Verdadero.

Debo llamar el webservices y pasarle dos parametros, el primero es
cadena y/ string, pero el segundo es un Array o Matriz, aqui esta el
problema, que no se como enviar estos como parametros o variables.


En otros webservices, lo envio con Post, como un XML, a continuacion
lo que debo enviar en el request, en formato xml:


POST /Direccion.asmx HTTP/1.1
Host: Servidor
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://0.0.0.0:8080/carpeta/SetRemesa"
<?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.<soap:Body>
<SetRemesa xmlns="http://0.0.0.0:8080/WSBB/">
<imei>string</imei>
<remesa>
<Numero>string</Numero>
<NombreRecipiente>string</NombreRecipiente>
<Monto>string</Monto>
<CodigoMensajero>unsignedShort</CodigoMensajero>
<FechaEntrega>dateTime</FechaEntrega>
<Beneficiario>boolean</Beneficiario>
</remesa>
</SetRemesa>
</soap:Body>
</soap:Envelope>


Si te fijas el primero es un string, y el segundo seria una tabla en
formato xml, que es lo mismo que decir un Array de registro.

Hugo Carlos Aguilar Zapata

unread,
Sep 10, 2010, 5:56:58 PM9/10/10
to publice...@googlegroups.com
Sobre la misma aplicacion aqui esta un ejemplo donde se envia datos con POST, primero con variables/valores en el URL y luego se manda un XML

Revisalo para ver si se ajusta a tus requerimientos

StrReq = "usuario=" + cUser + "&pass=" + cPass + "&sucursal=" + cSuc + "&area=" + nArea +  "&fechap=" + ALLT(STR(cAño)) + "&patente=" + lcPatente +  "&aduana=" + lcaduana + "&secc=" + right(cAduana,1) + "&accion=" + lcAccion + "&ipvalid=" + cIPAdd + "&numerop=" + ALLT(STR(librop.numero))

*checa si existe el XML para enviarlo al servidor
  DoctoXML = FOPEN("XML\" + numPedXML)
    nSize =  FSEEK(DoctoXML, 0, 2)     && Move pointer to EOF
    IF nSize <= 0       
           WAIT WINDOW "ERROR, DATOS DEL ARCHIVO PARA TRANSMITIR, NO EXISTEN. INTENTE DE NUEVO"
    ELSE
        = FSEEK(DoctoXML, 0, 0)     
********* el XML se convierte en una cadena de caracteres
        cStringXML = FREAD(DoctoXML, nSize)
*         ? cStringXML
    ENDIF
    = FCLOSE(DoctoXML)      

    oXMLHTTPUpdate = CREATEOBJECT( "MSXML2.ServerXMLHTTP.4.0" )   
 ********* envia las variables y valores en un URL con POST  
    oXMLHTTPUpdate.open( "POST",;

        CSvrHTTP + "intranet/opera/controlp/resultapwin.asp?" + StrReq ,.F. )

********* envia el XML en la variable cStringXML en el metodo Send del objeto
    oXMLHTTPUpdate.setRequestHeader( "Content-Type","text/xml; charset=utf-8" )
        oXMLHTTPUpdate.send( cStringXML )


    pcResPed = oXMLHTTPupdate.ResponseText
    SELECT LIBROP
    IF librop.numero = INT(VAL(pcResPed))
        Wait Wind NoWait " REGISTRO EXISTOSO PARA PEDIMENTO " + allt(pcResPed)       
    ENDIF
       
    oXMLHTTPUpdate = NULL
    Release oXMLHTTPUpdate
                   

El 10 de septiembre de 2010 14:29, TurbiSoft <vbsco...@gmail.com> escribió:
Saludo Hugo, gracias por tu respuesta, e intentado con el parametro
tanta falso como Verdadero.

Debo llamar el webservices y pasarle dos parametros, el primero es
cadena y/ string, pero el segundo es un Array o Matriz, aqui esta el
problema, que no se como enviar estos como parametros o variables.

En otros webservices, lo envio con Post, como un XML, a continuacion
lo que debo enviar en el request, en formato xml:

POST /Direccion.asmx HTTP/1.1
Host: Servidor
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://0.0.0.0:8080/carpeta/SetRemesa"
<?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.<soap:Body>
<SetRemesa xmlns="http://80.34.5.204:8080/WSBB/">

TurbiSoft

unread,
Sep 13, 2010, 8:35:26 AM9/13/10
to Comunidad de Visual Foxpro en Español
Hola Hugo, el webSerbice no tiene habilitado el permiso sobre comandos
POST solo GET.

Lo que no se es como enviar la variable tipo array o coleccion, que
esta definida en el archivo WSDL a traves del comando GET, concatenado
en el URL.


Luis Alberto Turbi
Rep. Dominicana

TurbiSoft

unread,
Sep 13, 2010, 9:17:32 AM9/13/10
to Comunidad de Visual Foxpro en Español

Hugo Carlos Aguilar Zapata

unread,
Sep 13, 2010, 11:09:43 AM9/13/10
to publice...@googlegroups.com
te da el mismo resultado si con
   oXMLHTTPUpdate.
setRequestHeader( "Content-Type","text/xml; charset=utf-8" )
        oXMLHTTPUpdate.send( cStringXML )

Necesitas pasar el XML en el URL ?

Saludos ?

TurbiSoft

unread,
Sep 15, 2010, 9:29:34 PM9/15/10
to Comunidad de Visual Foxpro en Español

Gracias Hugo,

Efectivamente, en principio debia ser con GET, luego le pedi que
activaran el modo HTTPpost en la configuracion del webservice, ya que
asi lo he trabado anteriormente con otros WebServices,

Pero no se porque razon, me devuelve un error con Post, y con GET, la
pagina WSDL con la descripcion del webservice.

Voy a probar con ese obeto y te informo cualquier avance.
Reply all
Reply to author
Forward
0 new messages