2012-02-10 3 views
1

나는 SOAP 요청을 (클래스는 헤더를 정의) 보내려면이 클래스가비누, 요청을받을 필요가

class Personinfo 
{ 
    function __construct() { 
     $this->soap = new SoapClient('mysource.wsdl',array('trace' => 1)); 
    } 

    private function build_auth_header() { 
     $auth->BrukerID = 'userid'; 
     $auth->Passord = 'pass'; 
     $auth->SluttBruker = 'name'; 
     $auth->Versjon = 'v1-1-0'; 

     $authvalues = new SoapVar($auth, SOAP_ENC_OBJECT); 
     $header = new SoapHeader('http://www.example.com', "BrukerAutorisasjon", // Rename this to the tag you need 
     $authvalues, false); 

     $this->soap->__setSoapHeaders(array($header)); 
    } 

    public function hentPersoninfo($params){ 

     $this->build_auth_header(); 
     $res = $this->soap->hentPersoninfo($params); 
     return $res; 
    } 
} 

문제는 내 기능에 문제가 있음이며, 응답은 오류입니다. 요청할 때 어떤 콘텐츠를 보내고 싶은지 알고 싶지만 방법을 알 수는 없습니다.

$this->soap->__getLastRequest을 호출하는 hentPersoninfo-function에서 try/catch 블록을 시도했지만 항상 비어 있습니다.

내가 뭘 잘못하고 있니?

+0

무엇이 오류입니까? 오류는 어디서 발생 했습니까? 서버에서 보낸 것이라면 오류 응답을 구문 분석하십시오. 보내시는 내용을 알고 싶다면 wireshark를 사용하십시오. – KevinDTimm

답변

5

프로그래밍 방식으로 서비스에 액세스하기 전에 SoapUI을 사용하여 서비스로 전송해야하는 항목과 예상되는 서비스를 확인합니다.

이 방법을 사용하면 웹 서비스 및/또는 웹 서비스에 액세스하는 방법을 이해하지 못했습니다.

이 내용을 이해하고 나면 관련 SOAP 프레임 워크가 필요한 작업을 수행하도록 포커스를 좁힐 수 있습니다.

+0

좋은 아이디어, 잘 살펴 보겠습니다. – OptimusCrime

+0

SoapUI 또는 TCPMon (http://ws.apache.org/commons/tcpmon/)이 도움이 될 수 있습니다. 두 번째 것은 트래픽을 발생시키고 프록시처럼 작동하므로 요청과 응답을 표시합니다. – Alfabravo

+1

이 답변을 수락하는 것을 잊어 버렸으므로 약간 늦었습니다. 그러나 SoapUI는 훌륭합니다. 나는 비누 요청으로 주변을 어지럽히는 모든 사람들에게 제안합니다. – OptimusCrime

0

서버로 보내는 내용을 빠르게 찾으려면 클라이언트가 자신의 로컬 서버를 가리킬 수 있습니다.

$soap = new SoapClient(null, array('location' => "http://localhost/soap.php", 
            'uri'  => "http://test-uri/")); 

그런 다음 로컬 soap.php 스크립트에서 print_r($_REQUEST) 같은 것을 사용할 수 있습니다 SoapClient 문서와 관련하여, 당신은 서버 위치이 방법을 설정할 수 있습니다.

관련 문제