la recepción del archivo XML a través de HTTP POST
-
27-09-2019 - |
Pregunta
Tengo un script de prueba para recibir un archivo XML a través de HTTP Post y parece bien el trabajo cuando lo uso interno. Cuando muevo la secuencia de comandos a un servidor web que se puede acceder externamente aparece nada para estar sucediendo. Cualquier persona alguna idea?
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$inp = fopen("php://input");
$outp = fopen("xmlfile" . date("YmdHis") . ".xml", "w");
while (!feof($inp)) {
$buffer = fread($inp, 8192);
fwrite($outp, $buffer);
}
fclose($inp);
fclose($outp);
echo "<html><head>test response</head><body>OK</body></html>";
}
?>
Para publicar el xml que estoy usando rizo, no estoy seguro si este es el problema? Y no estoy enviando a una conexión segura (HTTPS):
function httpsPost($Url, $xml_data)
{
//Initialisation
$ch=curl_init();
//Set parameters
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_URL, $Url);
//Return a variable instead of posting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Activate the POST method
curl_setopt($ch, CURLOPT_POST, 1);
//Request
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
//execute the connexion
$result = curl_exec($ch);
//Close it
curl_close($ch);
return $result;
}
Solución
Asegúrese de que en su servidor allow_url_fopen
configuración está activada de php.ini.
Una vez dicho esto, tenga en cuenta preocupaciones de seguridad sobre ese entorno.
Actualización:
Trate de ver si hay algún error, activar el informe de error, poner estas dos líneas en la parte superior de la secuencia de comandos:
ini_set('display_errors', true);
error_reporting(E_ALL);
Otros consejos
Algunas otras cosas a comprobar:
-
php://input
no está disponible si el formulario tieneenctype=multipart/form-data
-
php://input
sólo puede ser leído una vez (no es probable, a menos que haya otras piezas a la secuencia de comandos no se ha mostrado) - tamaño de los datos de POST no supera
LimitRequestBody
de Apache y / oupload_max_size
/post_max_size
de PHP
algún motivo usted tiene que leer la entrada bruta y no puede hacer esencialmente fwrite($outp, $_POST['xml'])
?