2017-11-01 11 views
0

오류가 있습니다. 유효한 조치 매개 변수없이 요청을 처리 할 수 ​​없습니다. SOAP 서버로 로그인하고 싶습니다. 내 WSDL은 여기에 있습니다 : https://demo.krd.pl/Siddin/2.1/Import.asmx?WSDL 내 코드는 같은 것입니다 : 당신이 볼 수 있듯이, 나는 매개 변수 LoginRequest이 SOAP 서버에 방법 '로그인'을 호출 할SOAP 오류; 처리 할 수 ​​없습니다.

$client = new SoapClient('https://demo.krd.pl/Siddin/2.1/Import.asmx?WSDL', array(
      'location' => 'https://demo.krd.pl/Siddin/2.1/Import.asmx?WSDL', 
      'trace' => 1, 
      'exceptions' => true, 
      'cache_wsdl' => WSDL_CACHE_NONE, 
      'features' => SOAP_SINGLE_ELEMENT_ARRAYS, 
      'soap_version' => SOAP_1_2 
     )); 
    $auth = new stdClass(); 
    $auth->UserName = 'aaa'; 
    $auth->Password = 'bbb'; 
    $auth = new SoapVar($auth, SOAP_ENC_OBJECT, 'complexType', null, 'LoginRequest', 'types'); 
    $result = $client->login($auth); 
    die(var_dump($result)); 

-이 WSDL 파일에 설명합니다. 어떻게 그럴 수 있죠?

+0

rafaluf - 저는 PHPian이 아니지만 더 자세히 설명해주십시오. 나는 너에게 이걸 확실히 할 수있다. –

답변

0
without a valid action parameter. 

이것은 PHP SOAP 클라이언트가 필요한 SOAPAction http 헤더를 구성 할 수 없다는 것을 의미합니다.

는 헤더를 추가하지 않는 이유로 수 있습니다
soapAction="http://Siddin.ServiceContracts/2006/09/Login" 

, 예를 들면 : 당신 WSDL은 로그인 방법이에 대한 정의 이 하나

'soap_version' => SOAP_1_2, 

를 해결 나던 경우

'soap_version' => SOAP_1_1, 

로 변경 시도, 난 당신이 (HTTP 헤더 포함) 전송되는 메시지를 추적하여 일반 비누 디버깅을 시작하고 비교하는 것이 좋습니다 예를 들어 설정할 수있는 작업 요청 SoapUI를 사용하여 https://www.soapui.org/

+0

하지만이 프로그램은 나에게이 코드를 써야하는 PHP 코드를 알려주지 않습니다. 유효한 XML만을 제공합니다 ... 나는 유효한 PHP 코드입니다! – rafaluf

+0

당신이 무슨 뜻인지 확실하지 않아요, stackoverflow 사용자에게 코드를 작성 하시겠습니까? – Harry

+0

이 프로그램은 나에게이 XML을 생성했다 : <- 선택 사항 :! -> AAA <- 선택 사항 :! -> bbb 하지만 SOAP 서버로 보낼 때이 XML을 생성하는 PHP 코드를 생성하려고합니다. 나는 내 PHP 코드에서 내가 어디 있는지 알고 싶다. – rafaluf