2012-02-10 126 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; 
    } 
} 

的问题是,有什么错我的功能和该响应是一个错误。我想知道我的请求中包含哪些内容,但我无法弄清楚。

我试过try/catch-block在hentPersoninfo函数中调用$this->soap->__getLastRequest,但它总是空的。

我在做什么错?

+0

什么是错误?错误来自哪里?如果它来自您发送的服务器,则解析错误响应。如果你想知道你要发送什么,请尝试wireshark – KevinDTimm 2012-02-10 12:51:51

回答

5

在我开始以编程方式开始访问服务之前,我使用SoapUI来确保我知道发送给服务的需求以及我应该期待的内容。

这样,您就可以确保问题不在Web服务中和/或在您了解如何访问Web服务时。

在了解了这一点之后,您可以将注意力集中在使相关SOAP框架完成您所需的操作。

+0

好主意,我会看看它 – OptimusCrime 2012-02-10 12:54:01

+0

SoapUI或TCPMon(http://ws.apache.org/commons/tcpmon/)可以提供帮助。第二个吸引流量,并像代理一样行事,所以它显示请求和他们的回应 – Alfabravo 2012-02-10 13:08:00

+1

忘记接受这个答案,所以我有点晚了,但SoapUI是辉煌的。我建议每个人都用肥皂请求搞乱。 – OptimusCrime 2013-04-28 02:17:34

0

要快速找出要发送给服务器的内容,可以将客户端指向自己的本地服务器。关于到SoapClient文档,你可以设置一个服务器位置是这样的:

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

然后你就可以在你的本地soap.php脚本中使用类似print_r($_REQUEST)