Question

Bonjour, je suis Tring d'envoyer des en-têtes dans mon script PHP comme

$headers[] = "BATCH_TYPE: XML_SINGLE"; 
$headers[] = "VENDOR_ID: 56309";

Mais ils sont reçus comme:

Lot-Type Fournisseur-ID

.. pas comme ils étaient destinés ou nécessaires -. Qui me cause des problèmes

Quelqu'un sait pourquoi ou comment trier?

Merci,

<?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");

   // Activate the POST method
   curl_setopt($ch, CURLOPT_POST, 1) ;
   // Request
   curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
   curl_setopt($ch, CURLOPT_TIMEOUT, 999);

   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;
}

$request_file = "./post_this.xml"; 
$fh = fopen($request_file, 'r'); 
$xml_data = fread($fh, filesize($request_file));

fclose($fh);    

$url = 'http://www.xhaus.com/headers';

$headers = array();
$headers[] = "Expect:";
$headers[] = "Accept: text/xml";

$headers[] = "BATCH_TYPE: XML_SINGLE"; 
$headers[] = "BATCH_COUNT: 1";
$headers[] = "VENDOR_ID: 54367";


$Response = httpsPost($url, $xml_data, $headers);

echo $Response;

?>
Était-ce utile?

La solution 4

Après une semaine de lutte avec la compagnie de ce serveur externe, ils étaient en fait de me donner les mauvaises têtes - D'oh

Autres conseils

Comment vérifiez-vous ces en-têtes? Je viens moi-même essayé avec le code suivant: -

<?php

header("BATCH_TYPE: XML_SINGLE");

Et rentrer les éléments suivants: -

HTTP/1.1 200 OK
Date: Wed, 10 Jun 2009 08:56:54 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
X-Powered-By: PHP/5.2.6-3ubuntu4.1
BATCH_TYPE: XML_SINGLE
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html

Utilisez fsockopen () et écrire / lire quoi que ce soit manuellement vous avoir besoin. Je ne suis pas sûr que votre mise en œuvre de CURL ou lissée. d'autre comme proxy ne change pas vos têtes. Si vous voulez faire quelque chose de bien sûr - le faire vous-même;). En fait, il est si facile de créer HTTP demande et écrire à la prise ouverte ...

$req = "POST $url HTTP/1.0\n";
$headers[] = 'VENDOR_ID: 1234';
$headers[] = 'MY_OTHER_HEADER: xxxxx';
$req .= implode("\n", $headers);
$req .= "\n\n" . $request_body;

$sock = fsockopen($host, 80, $errno, $errstr, $timeout);
fwrite($sock, $req, strlen($req));

$return = '';
do 
{
    $return .= fread($sock, 512);
} while (!feof($sock));

fclose($sock);

Je ne sais pas, mais il me semble que lissée. comme cela a déjà été fait quelque part dans PEAR ...

Modifier le code suivant:

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Pour cela:

foreach($headers as $header)
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top