Foros del Web » Programando para Internet » PHP »

Bad Request al enviar XML a WebServices

Estas en el tema de Bad Request al enviar XML a WebServices en el foro de PHP en Foros del Web. Hola, estoy tratando de enviar un archivo XML a un webserver por HTML y php pero no me esta saliendo, al consultar en la respuesta, ...
  #1 (permalink)  
Antiguo 07/01/2015, 08:56
 
Fecha de Ingreso: enero-2015
Ubicación: Montevideo
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Bad Request al enviar XML a WebServices

Hola, estoy tratando de enviar un archivo XML a un webserver por HTML y php pero no me esta saliendo, al consultar en la respuesta, me aparece el mensaje:

"Bad Request - Invalid Hostname

HTTP Error 400. The request hostname is invalid."

El código que hice para comunicarme es este,

Cita:
<html>
<head>
<title>Prueba</title>
</head>
<body>
Código PHP:
    <?php

        $xml 
$_FILES['filetoupload'];
        
$filepath $xml['tmp_name'];
        
$filename $xml['name'];

        echo 
"<br>Archivo temporal: ".$filename."<br>Guardado en: ".$filepath."<br><br>";

        
//Iniciamos una sesion cURL
        
$curl curl_init();

        
//Indicamos a donde deseamos enviar nuestro post
        
curl_setopt($curlCURLOPT_URL,"http://www.host.com" );

        
//Indicamos lo que queremos enviar en nuestro post, en este caso un xml
        
curl_setopt($curl CURLOPT_POSTFIELDS,$xml);

        
curl_setopt($curlCURLOPT_HTTPHEADER,
                    array(
'Content-Type: application/x-www-form-urlencoded'
                            
'Content-Length: strlen($xml)',
                            
'Host: http://www.host.com'));

        
//Añadimos una opción más para poder almacenar la respuesta en una variable
        
curl_setopt($curlCURLOPT_RETURNTRANSFER1);

        
//Ejecutamos el curl y almacenamos la respuesta en una variable
        
$respuesta=curl_exec($curl);

        
print_r($respuesta);

        if(
curl_errno($curl))
        {
            print 
'<br>ERROR: '.curl_error($curl);
        }
        else
        {
            
//Cerramos nuesta sesión
            
curl_close($curl);    
        }

    
?>
Cita:
</body>
</html>
esto es en el archivo upload.php

El archivo se sube en index.php:

<form method="post"
enctype="multipart/form-data"
'action="upload.php"'
>
<input type="file" name="filetoupload">
<input type="submit" value="Envia!">
</form>




Al agregar este código, aparece el siguiente mensaje:


Código PHP:
        if(curl_errno($curl))
        {
            print 
'<br>ERROR: '.curl_error($curl);
        }
        else
        {
            
//Cerramos nuesta sesión
            
curl_close($curl);    
        } 
¿Qué puede estar mal o estar faltándose?

Saludos
  #2 (permalink)  
Antiguo 07/01/2015, 09:50
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Bad Request al enviar XML a WebServices

revisa los headers que estas enviando, generalmente un error 400 es por que algo que estas enviando en tu petición no lo entiende el servidor http en este caso el hostname
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 07/01/2015, 10:38
 
Fecha de Ingreso: enero-2015
Ubicación: Montevideo
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Bad Request al enviar XML a WebServices

Ahí pude corregirlo, al parecer iba "Hostname" y no "Host", otra cosa que me está fallando es al obtener Content-Length de strlen($xml) por lo que lo dejé comentado. Ahora el problema que tengo es que me da este error:

Cita:
Error de servidor

405: el verbo HTTP usado para obtener acceso a esta página no está permitido.
La página que está buscando no se puede mostrar porque se usó un método no válido (verbo HTTP) para intentar el acceso.

¿A qué se puede deber?

Esto es lo que dice el sitio de Microsoft:
Cita:
405: Método no permitido.Este error puede producirse cuando un cliente envía una solicitud HTTP al servidor que ejecuta IIS y la solicitud contiene un verbo HTTP que el servidor no reconoce. Para resolver el problema, asegúrese de que la solicitud del cliente utiliza un verbo HTTP que es compatible con el rfc de HTTP. Consulte la sección "Referencias" para obtener información acerca de la solicitud HTTP.
  #4 (permalink)  
Antiguo 07/01/2015, 11:03
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Bad Request al enviar XML a WebServices

Los verbos se refieren al método de envío (POST, GET, PUT, DELETE, etc..), que por lo que veo se supone que debiera de ser post pero es algo que debes de revisar.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: bad, html, request, variable, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:12.