2017-03-21 1 views
0

Je consomme une méthode SOAP qui attend un contenu XML avec un codage ISO-8859-1. J'ai essayé d'ajouter directement en tant que paramètre de méthode, mais SoapClient renvoie une erreur d'encodage:Comment puis-je envoyer un fichier XML ISO-8859-1 en utilisant SoapClient?

SOAP-ERROR: Encoding: string '<?xml version="1.0" encoding="ISO-8859-1"?>(...)' is not a valid utf-8 string

Si je convertir le contenu XML en UTF-8 le serveur SOAP ne reconnaît pas le contenu XML.

Toute solution en utilisant SoapClient? Toute alternative utilisant cURL?

+0

Selon les documents officiels vous ne pouvez pas que le codage est toujours utf-8 'L'option de codage définit codage de caractères interne. Cette option ne change pas l'encodage des requêtes SOAP (c'est toujours utf-8), mais convertit les chaînes en elle. »: Http://php.net/manual/en/soapclient.soapclient.php –

Répondre

0

Comme souligné par Constantin GALBENU, il ne peut pas être fait en utilisant SoapClient. je devais utiliser cURL à la place, l'envoi charset à en-tête de type de contenu:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-type: text/xml;charset=iso-8859-1", 
    "Accept: text/xml", 
    "Cache-Control: no-cache", 
    "Pragma: no-cache", 
)); 
$result = curl_exec($ch); 
curl_close($ch);