2015-11-13 2 views
0

Я пытаюсь использовать API WCF впервые, используя PHP SoapClient, но до сих пор не блокировал.Использование PHP SoapClient для использования WCF API

WSDL is copied here

Бегин, мне нужно, чтобы получить маркер из функции LOGIN, и использовать этот маркер при вызове других функций. Вход детали:

  • Имя пользователя: 'обычные'
  • Passord: '' (пробел, а не NULL)

До сих пор я пытался несколько комбинаций, как правило, что-то вроде этого:

<?php 

ini_set('soap.wsdl_cache_enabled',0); 
ini_set('soap.wsdl_cache_ttl',0); 

$params = array(
    "soap_version" => SOAP_1_2, 
    "trace" => 1, 
    "exceptions" => 0, 
); 

$client = new SoapClient('http://bibjure.rwaao.no:8001/Jussystemer/BibjureService?singleWsdl', $params); 

$retval = $client->Login('regular',''); 

if (is_soap_fault($retval)) { 
    trigger_error("SOAP Fault: (faultcode: {$retval->faultcode}, faultstring: {$retval->faultstring})", E_USER_ERROR); 
} 

var_dump($retval); 

что приводит к следующей ошибке: PHP Fatal error: SOAP Fault: (faultcode: s:Sender, faultstring: The creator of this fault did not specify a Reason.) in /mnt/data/fredrik/wcf-test.php on line 17

Я не знаю, как решить эту ошибку. Я надеюсь, что кто-то может увидеть ошибку в моем коде.

Большое спасибо.

ответ

0

Добавить мыльные заголовки и попробовать что-то вроде этого. Он может работать

 $client = new SoapClient('http://bibjure.rwaao.no:8001/Jussystemer/BibjureService?singleWsdl', $params); 

     $actionHeader = new SoapHeader('http://www.w3.org/2005/08/addressing','Action','http://tempuri.org/IService/GetData',true); 
     $client->__setSoapHeaders($actionHeader); 

     $retval = $client->Login('regular',''); 
+0

Такая же ошибка. Я предполагаю, что параметры в «SoapHeader» необходимо изменить. К сожалению, я понятия не имею, что. – frigg

+0

@frigg Да, вам нужно изменить параметры в заголовке. Возьмите это как образец. $ auth = array ( 'UserName' => 'USERNAME', 'Пароль' => 'PASSWORD', 'SystemId' => array ('_' => 'DATA', 'Param' => 'PARAM'), ); $ header = new SoapHeader ('NAMESPACE', 'Auth', $ auth, false); $ client -> __ setSoapHeaders ($ header); –

Смежные вопросы