SoapClient WSA Action To Hatası Çözümü PHP

Php SoapClient WSA Action To Hatası

Hata mesajı:
errors:

1) The message with To '' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher.  Check that the sender and receiver's EndpointAddresses agree.

2) The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/SoapService/login'

Php ile bir başka servise soap isteği atıldığında aşağıdaki gibi bir hata alınıyor ise soap header da action ve to parametreleri eklenerek soap servisin yollu belirtilmelidir. daha sonra soap servis methoduna istek atıldığında headerBody de birleştirilip gönderilmeldir.


<?php
ini_set("soap.wsdl_cache_enabled","0");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


$url = 'http://test.com/SoapService.svc?wsdl';//change
$client = new SoapClient($url,array('soap_version' => SOAP_1_2,
'trace' => 1,'exceptions'=> false));

$wsa_namespace = 'http://www.w3.org/2005/08/addressing';
$NS_ADDR = 'http://www.w3.org/2005/08/addressing';
$ACTION_ISSUE = 'http://tempuri.org/SoapService/login';//change
$ACTION_ADDR = 'http://test.com/SoapService.svc';//change

$action = new SoapHeader($NS_ADDR, 'Action', $ACTION_ISSUE, true);
$to = new SoapHeader($NS_ADDR, 'To', $ACTION_ADDR, false);

$headerbody = array('Action' => $action,'To' => $to);
$client->__setSoapHeaders($headerbody);

$parameters = array('username'=>'abc','password'=>'123');//change
$result = $client->__soapCall('login',$parameters);//change

echo '<pre>';print_r($result);exit();


soapUI 

ilgili method açılarak  alt menuden WS-A menusu açılır ve görseldeki görüntü gelir.

action ve to daki alanlar soap servisin url ile doldurulur.

action: http://tempuri.org/SoapService/login

to: soap-servis-url/SoapService.svc




Related Posts

SoapClient WSA Action To Hatası Çözümü PHP
4/ 5
Oleh