Salut J'essaie actuellement de publier un fichier XML sur un serveur externe, mais je reçois une réponse en retour que les en-têtes sont incorrects. Le serveur que je poste nécessite des en-têtes et je me demande s'ils sont dans le bon format ou s'il y a d'autres en-têtes "standards" qui doivent être inclus?PHP - HTTP Post - en-têtes incorrects
Mon code est:
<?php
function httpsPost($Url, $xml_data, $headers)
{
// Initialisation
$ch=curl_init();
// Set parameters
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $Url);
// Return a variable instead of posting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_USERPWD,"username:password");
// Active the POST method
curl_setopt($ch, CURLOPT_POST, 1) ;
// Request
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
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;
}
$headers[0]="BATCH_TYPE: XML_SINGLE";
$headers[1]="BATCH_COUNT: 1";
$headers[2]="VENDOR_ID: 53906";
$request_file = "./post_this.xml";
$fh = fopen($request_file, 'r');
$xml_data = fread($fh, filesize($request_file));
fclose($fh);
$url = 'http://www.example.com/test.php';
$Response = httpsPost($url, $xml_data, $headers);
echo $Response;
?>
Il peut être utile si vous publiez plus d'informations sur le serveur et le message d'erreur exact que vous voyez. –
Si vous utilisez Firebug, il peut être utile de poster la réponse d'en-tête exacte que vous avez ici. – andyk
Le problème est que les en-têtes sont reçus différemment de ce qui est envoyé, par exemple: VENDOR_ID est reçu en tant qu'ID du fournisseur \ n BATCH-TYPE est reçu en tant que type batch. \ N Quelqu'un sait comment trier cela?
si vous changez la valeur de $ url ci-dessus pour voir http://www.xhaus.com/headers yopu'll ce que je veux dire .... – thegunner