2017-10-10 20 views
1

SOAPクライアントにスクリプトを接続しようとしています。しかし、私がしようとすると、上記のエラーがスローされます。私は $client->__getFunctions()で関数を取得しようとしました。すべての機能を表示します。彼らに電話しようとすると致命的なエラーで終わります。メッセージで指定されたSOAPアクション ''がHTTP SOAPアクションと一致しません。

$client = new SoapClient("http://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc?singleWsdl",array(
    'soap_version' => SOAP_1_2, // !!!!!!! 
)); 
var_dump($client->__getFunctions()); 
//var_dump($client->__getTypes()); 

$login_params = array(
    'UserId' => 123456, 
    'Password' => 123456, 
    'PassKey' => 1234569870, 

); 

//$response = $client->getPassword($login_params); 
$response = $client->__soapCall('getPassword', array($login_params)); 
dd($response); 

私は1.1にSOAPのバージョンを変更した場合、私はは、コンテンツタイプ「text/xmlであるため、メッセージを処理することはできません別のエラーを取得します。 charset = utf-8 'は予想されるタイプではありませんでした' application/soap + xml; charset = utf-8 'となります。もし私がここで何が不足しているのかを知ることができれば素晴らしいだろう。

+0

あなたは解決策を見つけたことがありますか?私たちは同じ問題に取り組んでいます。 – ReSpawN

+0

はい私は回避策を見つけました。私の場合の問題は、私の場合は送信されないwsアドレス指定を期待していたということでした。それを見てみましょう。 @ReSpawN。石鹸のバージョンにも不一致があります。 –

答えて

0

@Naveen Kumarによる返信に対応する:これは私の解決策でした。最後に

// Apply WSA headers 
$action = new \SoapHeader('http://www.w3.org/2005/08/addressing', 'Action', self::ACTION_PREFIX.$this->action); 
$to = new \SoapHeader('http://www.w3.org/2005/08/addressing', 'To', $this->endpoint); 
$this->client()->__setSoapHeaders([$action, $to]); 

$this->clientは単に\SoapClientのインスタンスを返し、アクションは、メソッドへの完全なURLを含んでいます。もちろん、To部分はオプションですが、私の場合は明らかに.wsdlファイルで指定されたエンドポイントを指しています。

関連する問題