2013-08-20 3 views
1

Je dois envoyer la requête suivante, qui est XML avec un nom d'utilisateur et un mot de passe à la fin du fichier xml. Je peux obtenir que cela fonctionne comme une URL quand je coller dans le navigateur:Demande de curl - demande xml non valide lors de la publication de l'utilisateur et du mot de passe après xml

URL?XML=<>...</>&user=123456&password=123456 

Mais lorsque je tente de créer les boucles appeler dit que c'est une requête XML non valide.

J'ai essayé d'avoir l'utilisateur & mot de passe dans les POSTFIELDS. J'ai également essayé de les placer en tant que variable avant $ trial = '& user = 123456 & password = 123456' mais n'arrive toujours pas à le faire fonctionner.

$xml = <<<ENDOFXML 
<?xml version="1.0" encoding="UTF-8"?><xmldata>...</xmldata> 
ENDOFXML; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded')); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.urlencode($xml).urlencode('&user=123456&password=123456')); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_close($ch); 

Répondre

1

Ceci est faux:

curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.urlencode($xml).urlencode('&user=123456&password=123456')); 

UrlEncode seulement les noms de variables et les valeurs (ou seules les valeurs si vous connaissez les noms de variables sont ok):

curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.urlencode($xml).'&user=' . urlencode('123456').'&password=' . urlencode('123456')); 
+0

Salut Marek, Merci pour une réponse aussi rapide. Avait complètement oublié cela. Merci beaucoup cela fonctionne maintenant. –

Questions connexes