Page 1 of 1

Error usando HTTP

PostPosted: Mon Apr 01, 2013 7:11 pm
by Jorge Jaurena
Hola a todos.
Estoy con este error hace rato y no logro resolverlo, tampoco encuentro mucha documentacion sobre HTTP.
Intento comunicarme con un web server al que debo enviarle un xml en base 64 y se supone que el me envia en respuesta otro xml, el problema es que cuando ejecuto el envio del xml me da este error y de ahi no salgo. Estoy basandome en un ejemplo puesto aqui por Rafa Carmona que es lo unico que pude encontrar en HTTP.
El contenido de la variable que muestra el error es el xml que envio en base 64.

Application
===========
Path and name: C:\WPS Gestion Bin\TRABAJO WEB SERVER\WebClien.EXE (32 bits)
Size: 2,422,784 bytes
Compiler version: Harbour 3.2.0dev (Rev. 18449)
FiveWin Version: FWH 12.11
Windows version: 6.1, Build 7600

Time from start: 0 hours 0 mins 5 secs
Error occurred at: 04/01/13, 15:57:58
Error description: (DOS Error -2147352567) WINOLE/1007 Error en la descarga del recurso solicitado.
(0x800C0008): msxml3.dll
Args:
[ 1] = C PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMTUiPz4NCjxzb2FwOkVudmVsb3BlIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnNvYXA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIj4NCiAgIDxzb2FwOkJvZHk+DQogICAgICA8T2J0ZW5lck1hZXN0cm8geG1sbnM9Imh0dHA6Ly90ZW1wdXJpLm9yZy8iPg0KICAgICAgICAgPE1hZXN0cm9SZXEgeG1sbnM9Imh0dHA6Ly9CVFM4MDcyX0ZSQU5RX0ZVTExfRVhQUkVTUy5TQ0hFTUFTLndzTWFlc3Ryb1JlcXVlc3QiPg0KICAgICAgICAgICAgPENvZGlnb0VzdGFjaW9uIHhtbG5zPSIiPjcwMTU8L0NvZGlnb0VzdGFjaW9uPg0KICAgICAgICAgICAgPENsYXZlQXV0ZW50aWNhY2lvbiB4bWxucz0iIj5XUjBESTI4NE1TOUc8L0NsYXZlQXV0ZW50aWNhY2lvbj4NCiAgICAgICAgICAgIDxUaXBvUHJvY2VzbyB4bWxucz0iIj5NPC9UaXBvUHJvY2Vzbz4NCiAgICAgICAgICAgIDxUaXBvUHJvY2Vzb1NvbGljaXRhbnRlIHhtbG5zPSIiPk9idGVuZXJNYWVzdHJvPC9UaXBvUHJvY2Vzb1NvbGljaXRhbnRlPg0KICAgICAgICAgICAgPFRyYXphIHhtbG5zPSIiPk5PIFVTQVIgMjcvMDMvMjAxMyAxOTowMTwvVHJhemE+DQogICAgICAgICA8L01hZXN0cm9SZXE+DQogICAgICA8L09idGVuZXJNYWVzdHJvPg0KICAgPC9zb2FwOkJvZHk+DQo8L3NvYXA6RW52ZWxvcGU+DQoNCg==

Esto hago en mi prg:

try
oHttp := CreateObject( "MSXML2.XMLHTTP" )
catch e
? "Error de creacion"
end

ContXML :=MEMOREAD("ObtenerMaestros.xml")
Codi64XML:=hb_base64encode(ContXML)

oHttp:Open( "POST", cLocation, .F. )
oHttp:SetRequestHeader( "SOAPAction","http://tempuri.org/BTS8072_FRANQ_FULL_EXPRESS/ObtenerMaestro" )
oHttp:SetRequestHeader( "Content-Type","text/xml" )

oHttp:Send( Codi64XML ) && ACA SE PRODUCE EL ERROR.

Desde ya muchas gracias.
Jorge Jaurena

Re: Error usando HTTP

PostPosted: Thu Apr 04, 2013 4:39 pm
by Antonio Linares
Jorge,

Que valor tienes en la variable cLocation ?

Mira lo que se comenta aquí:
http://www.portalfox.com/index.php?name=News&file=article&sid=1074&mode=nested&order=0&thold=0

Excelente proyecto... pero tengo el mismo problema que tuvieron el año pasado:
WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: Error en la descarga del recurso solicitado. HRESULT=0x1: Función incorrecta. - WSDLReader:Loading of the WSDL file failed HRESULT=0x80070057: El parámetro no es correcto. - Client:One of the parameters supplied is invalid. HRESULT=0x80070057

Cual es la solución? hay una mejor manera de hacerlo con la versión 9?

Saludos!

Re: Re: Cómo crear un Web Service con VFP8 sin tener instalado el VFP


por dasarobe en 17 Mar, 2006 - 12:40
(Información del usuario | Enviar un mensaje
Hola grupo

Yo después de mucho consultar me encontre con un artículo de Microsoft donde dice que hay un pequeño bug, al asignar la dirección del SOAPIS30.DLL en "C:\Archivos de Programa\Archivos Comunes\MSSoap\Binaries\Soapis30.dll" OJO no se permiten direcciones con espacios, por lo tanto se debe digitar con el nombre corto DOS "C:\Archiv~1\Archiv~1\MSSoap\Binaries\Soapis30.dll" o lo que le corresponda en su cumputador

Re: Error usando HTTP

PostPosted: Thu Apr 04, 2013 10:34 pm
by Jorge Jaurena
Hola Antonio, te pido disculpas pero no puedo divulgar publicamente el contenido de esa variable, es la direccion de un web server de YPF, si la necesitas te la envio por mail.
Te agradezco la respuesta, voy a ver que puedo solucionar con esto.

Muchas gracias
Jorge Jaurena

Re: Error usando HTTP

PostPosted: Thu Apr 04, 2013 10:53 pm
by Antonio Linares
Jorge,

Me la puedes enviar por email. De todas formas has comprobado que no tenga algún espacio en el nombre ?

Re: Error usando HTTP

PostPosted: Fri Apr 12, 2013 4:32 pm
by elmoiquique
YO LO HARIA ASI


try
oHttp := CreateObject( "MSXML2.SERVERXMLHTTP.5.0" )
catch e
? "Error de creacion"
end

ContXML :=MEMOREAD("ObtenerMaestros.xml")
Codi64XML:=hb_base64encode(ContXML)

doc=CreateObject("MSXML2.DOMDocument")
oHttp:Open( "POST", cLocation, .F. )
oHttp:SetRequestHeader( "SOAPAction","http://tempuri.org/BTS8072_FRANQ_FULL_EXPRESS/ObtenerMaestro" )
oHttp:SetRequestHeader( "Content-Type","text/xml" )

doc:loadXML(codi64xml)
oHttp:Send( doc:xml )
&& ACA SE PRODUCE EL ERROR.

Espero te sirva .. saludos

Re: Error usando HTTP

PostPosted: Sat Apr 13, 2013 10:44 pm
by Jorge Jaurena
Te agradezco mucho tu ayuda. Estoy probando, cuando mando el archivo usando tu tecnica del DOM algo cambia, el windows me pregunta si confio en los certificados y bla bla y continua el proceso pero no baja nada, se que el problema lo tengo en que no defino correctamente el objeto que deberia tener para que se aloje el xml recibido, estoy seguro que el tema va por el XMLHttpRequest que me parece que es un objeto pero no se bien como usarlo, si tenes alguna idea te lo voy a agradecer.

Saludos
Jorge G. Jaurena

Re: Error usando HTTP

PostPosted: Mon Apr 15, 2013 1:35 pm
by elmoiquique
doc = CreateObject( "MSXML2.DOMDocument" )
ohttp = CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" , ts_servidor , .F. )
ohttp:SetRequestHeader( "SOAPAction" , "visarDocumento" )
ohttp:SetRequestHeader( "Content-Type" , "text/xml;charset=utf-8" )
ohttp:SetRequestHeader( "Accept-Languaje","sp" )
doc:LoadXML( ctext )
TRY
ohttp:Send( doc:xml )
CATCH
msginfo("No Se Pudo Enviar Documento XML","Intente Nuevamente")
return .t.
END
response:=ohttp:responseText


asi lo utilizo, yo y el webservice, me responde

Re: Error usando HTTP

PostPosted: Mon Apr 15, 2013 9:59 pm
by Jorge Jaurena
Probe enviar usando el TRY y no me da ningun error, aparentemente el archivo se envia pero luego de eso pregunto esto, antes del response:

IF oHttp:Status<>200
? str(oHttp:Status)
ENDIF

200 es OK, pero me da el codigo 400 que significa Bad Request asi que creo que no me esta bajando nada, disculpa, no se si tendras idea porque puede dar este codigo de error.
Gracias.

Jorge Jaurena

Re: Error usando HTTP

PostPosted: Thu Apr 18, 2013 3:08 pm
by elmoiquique
4xx Errores del cliente La solicitud contiene sintaxis incorrecta o no puede procesarse.

La intención de la clase de códigos de respuesta 4xx es para casos en los cuales el cliente parece haber errado la petición. Excepto cuando se responde a una petición HEAD, el servidor debe incluir una entidad que contenga una explicación a la situación de error, y si es una condición temporal o permanente. Estos códigos de estado son aplicables a cualquier método de solicitud (como GET o POST). Los agentes de usuario deben desplegar cualquier entidad al usuario. Estos son típicamente los códigos de respuesta de error más comúnmente encontrados.

400 Solicitud incorrecta
La solicitud contiene sintaxis errónea y no debería repetirse.


Estas enviando un XML con una sintaxis erronea, creo que el xml tiene problemas