J'utilise php 5.2.9 J'ai un tampon XML que je dois publier sur une URL HTTPS.Utilisation de PHP pour publier un tampon XML sur une page HTTPS
Quelle est la bonne façon de procéder? Je vois divers exemples sur le web, et aucun d'entre eux semblent travailler pour moi: Certains définissent les en-têtes de cURL comme ceci:
$headers = array(
"POST " . $page . " HTTP/1.0",
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: \"run\"",
"Content-length: ".strlen($buffer),
);
Où $ page contient la demande sur le serveur et le tampon $ contient la Données XML
Le tampon réelle $ est envoyé comme valeur:
curl_setopt($curl, CURLOPT_POSTFIELDS, $buffer);
Mais je ne vois pas comment cela peut fonctionner, comme CURLOPT_POSTFIELDS attend sa valeur d'être un tableau et non un tampon.
Puis je vis plusieurs façons de configurer les aspects SSL de l'appel:
curl_setopt($curl, CURLOPT_SSLVERSION,3);
curl_setopt (curl $, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ curl, CURLOPT_SSL_VERIFYHOST, 2); Tous ces éléments sont-ils nécessaires? J'ai vu des exemples où les éléments suivants: a également été
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
Quelqu'un peut-il afficher un exemple de travail complet qui explique ce qui doit être fait pour poster un tampon XML à l'aide cURL à une URL HTTP?
Merci à l'avance
J'ai déjà le tampon XML dans les variables $ buffer. Je ne veux pas que le code le lise depuis le disque. Selon la solution de rappel, voici à quoi doit ressembler la fonction: chaîne read_callback (ressource ch, ressource fd, longue) où fd est le descripteur de fichier transmis à CURL par l'option CURLOPT_INFILE. Encore une fois, je ne veux pas travailler avec des fichiers. N'y a-t-il pas une solution plus simple? – user427677
@jason Ce que disent les docs est "Le nom d'une fonction de rappel où la fonction de rappel prend deux paramètres: le premier est la ressource cURL et le second est une chaîne de caractères avec les données à lire. cette fonction de rappel Retourne le nombre d'octets lus Renvoie 0 au signal EOF. " Donc pas de fd. – Artefacto