2017-03-22 11 views
0

SOAPを使用してWSに接続しようとしていて、メソッドを呼び出すときにコンテンツタイプのエラーが発生しました。コンテンツタイプ 'text/xml; charset = utf-8 'は予想されるタイプではありませんでした' application/soap + xml; charset = utf-8 'PHP SOAPコールのコンテンツタイプ

以下は私のコードです。パラメータの数を減らし、URL、ユーザー、パスワードを隠しています。

エラーは、ClientRegist()関数を呼び出すと発生します。私は別の方法で$ paramsを渡さなければならないと確信していますが、どこでもサンプルを見つけることはできません。

$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); 

答えて

1

SOAPバージョン1.2を試してください。デフォルトのContent-Typeはapplication/soap + xmlです

<?php 

// ... 

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