2017-03-22 6 views
0

Je tente de se connecter avec un WS via Soap et aux prises avec une erreur de type de contenu lorsque j'appelle la méthode: type de contenu 'text/xml; charset = utf-8 'n'était pas le type attendu' application/soap + xml; charset = utf-8 'PHP SOAP type de contenu d'appel

Ci-dessous est mon code, réduisant le nombre de paramètres et de cacher l'URL, l'utilisateur et le mot de passe.

L'erreur se produit lorsque j'appelle la fonction ClientRegist(). Je suis convaincu que je dois passer $ params d'une manière différente, mais je ne trouve aucun exemple ailleurs.

$url = 'http://---'; 

$ctx_opts = array(
    'http' => array(
    'header' => 'Content-Type: application/soap+xml' 
), 
    'username' => '---', 
    'password' => '---', 
    'trace' => true, 
    'exceptions' => true 
); 

$ctx = stream_context_create($ctx_opts); 

$client = new SoapClient($url, array('stream_context' => $ctx)); 

$params = array(
    'Cardnumber' => $number, 
    'Name' => $name 
); 

try { 
    $client = new SoapClient($url, array('trace' => $trace, 'exceptions' => $exceptions)); 
    $response = $client->ClientRegist($params); 
} 

catch (Exception $e) { 
    echo "Error!<br>"; 
    echo $e -> getMessage().'<br>'; 
    echo 'Last response: '. $client->__getLastResponse(); 
} 

var_dump($response); 

Répondre

1

Essayez la version SOAP 1.2. Son type de contenu par défaut est application/soap + xml

<?php 

// ... 

$client = new SoapClient(
    $url, 
    array(
     'soap_version' => SOAP_1_2, // !!!!!!! 
     'stream_context' => $ctx 
    ) 
);