J'essaie d'envoyer une requête HTTPS POST avec des données XML à un serveur utilisant PHP.PHP https post XML data avec cURL
Tout ce qui est envoyé au serveur nécessite une authentification, donc je vais utiliser cURL.
Quelques informations de base .: les données XML est de demander au serveur de télécharger un fichier à partir d'une URL spécifique à son stockage local.
Une règle d'utilisation de cette API est que je DOIT définir le type de contenu pour chaque demande à application/xml.
C'est ce que je l'ai fait, mais ne fonctionne pas ...
<?php
$fields = array(
'data'=>'<n1:asset xmlns:n1="http://.....com/"><title>AAAA</title><fileName>http://192.168.11.30:8080/xxx.html</fileName><description>AAAA_desc</description><fileType>HTML</fileType></n1:asset>'
);
$fields_string = "";
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string,'&');
$url = "https://192.168.11.41:8443/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "admin:12345678");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml', 'Content-length: '. strlen($fields_string)));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
Je suis censé obtenir une réponse XML soit réussi ou télécharger télécharger échoué. Mais à la place, j'obtiens ce message d'erreur.
HTTP/1.1 415 Type de Unsupported Media Server: Apache-Coyote/1.1 Content-Type: text/xml; charset = UTF-8 Content-Length: 0 Date: Jeu 2 décembre 2010 03 : 02: 33 GMT
Je suis sûr que le type de fichier est correct, le format XML est correct. J'ai essayé urlencode les champs mais cela n'a pas fonctionné. Quoi d'autre que j'aurais pu faire de mal?
essayé, ne fonctionnait pas ni – EDDIU