PHP cURL Type de Contenu n'est pas défini
J'ai un service web simple que je tiens à vous connecter avec. Pour poster quelques XML
, qui sera correctement déroulé sur le service web côté, j'ai besoin de préparer une demande appropriée. Je suis à l'aide de cURL
pour cela comme ça:
try {
$ch = curl_init();
if (FALSE === $ch)
throw new Exception('failed to initialize');
curl_setopt($ch, CURLOPT_URL,"192.168.1.37");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/xml',
'Connection: Keep-Alive'
));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_PROXY, '');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect: "));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xml);
$request= curl_getinfo($ch);
var_dump($request);
$content = curl_exec($ch);
if (FALSE === $content)
throw new Exception(curl_error($ch), curl_errno($ch));
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),E_USER_ERROR);
}
Tout devrait être ok. D'abord, je suis affichant le corps de la requête à partir de curl_getinfo($ch);
et puis je suis en train de montrer la réponse de $content
variable.
Seule restriction pour demander à être envoyé au serveur est Content-Type
en-tête DOIT être application/xml
sinon, le serveur répond avec un message d'erreur ( C'est pas mon idée et je ne peux rien faire à ce sujet)
Ici, elle est sortie de la demande:
array(21) { ["url"]=> string(68) "192.168.1.37" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(0) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } }
et la réponse est HTTP 400 Bad Request
Ce que je peux voir de qui est ["content_type"]=> NULL
mais je définissez cette variable dans mon code PHP...
Quelqu'un peut me dire ce que je suis absent?
- Essayez de voir ce Post: http://stackoverflow.com/questions/9823810/set-http-request-content-type
Vous devez vous connecter pour publier un commentaire.
Vous définissez HTTP_HEADER deux fois:
Je suppose que c'est le problème. La deuxième fois, vous supprimez le premier paramètre.