ontvang xml lêer via http post
-
27-09-2019 - |
Vra
Ek het 'n toets script om 'n XML-lêer via http post ontvang en dit blyk te werk ok toe ek gebruik dit intern. Toe ek beweeg die script om 'n web bediener wat kan verkry word ekstern niks blyk te gebeur. Enigiemand enige idees?
<?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>";
}
?>
Om die xml Ek gebruik krul, nie seker of dit die probleem te plaas? En ek is nie die stuur van 'n veilige verbinding (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;
}
Oplossing
Maak seker dat jou bediener allow_url_fopen
instellings aangeskakel uit php.ini.
Noudat dit gesê is, bewus te wees van veiligheid oor daardie instellings.
Update:
Probeer om te sien of daar enige fout, draai op fout verslagdoening, sit die twee lyne op die top van jou script:
ini_set('display_errors', true);
error_reporting(E_ALL);
Ander wenke
Sommige ander dinge om te kyk:
-
php://input
is nie beskikbaar indien die vorm hetenctype=multipart/form-data
-
php://input
kan slegs gelees word sodra (waarskynlik nie, tensy daar is ander dele van jou script jy nie het getoon) - POST data grootte nie meer as Apache se
LimitRequestBody
en / of PHP seupload_max_size
/post_max_size
Enige rede moet jy die rou insette te lees en kan nie in wese doen fwrite($outp, $_POST['xml'])
?