肥皂没有正确发送,需要得到请求

时间:2012-02-10 12:42:14

标签: php soap

我有这个类发送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;
    }
}

问题是我的功能有问题而且响应是错误的。我想知道我的请求中发送了哪些内容,但我无法弄清楚如何。

我在hentPersoninfo函数中尝试了一个try / catch-block,它调用$this->soap->__getLastRequest,但它总是为空。

我做错了什么?

2 个答案:

答案 0 :(得分:5)

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

通过这种方式,您可以确保Web服务中的问题和/或您对如何访问Web服务的理解。

在理解了这一点之后,您可以将注意力集中在使相关的SOAP框架完成您需要它做的事情上。

答案 1 :(得分:0)

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

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

然后,您可以在本地print_r($_REQUEST)脚本中使用soap.php之类的内容。