Nusoap PHP客户端 - 错误500

时间:2016-05-02 17:01:30

标签: php soap-client nusoap wsse

您好我正在尝试使用NuSoap通过WSDL文件获取一些数据。

示例中的wsdl文件和端点的路径如下所示。

到目前为止,我所拥有的是以下内容:

λ> instance (Traversable t, Traversable u) => Traversable (Compose t u) where
     traverse a2fb (Compose tua) =
       fmap Compose (traverse (traverse a2fb) tua)

问题是我在尝试获取数据时遇到内部服务器错误500。密码和用户名是正确的(尝试使用SoapUI应用程序,我得到所有数据。)

对于用户和密码,我尝试设置一个SoapHeader,就像上面的例子一样,我也试过以下,两者都不起作用。

try {
                require_once('../includes/nusoap/lib/nusoap.php');

                $wsdl = 'https://service.stadt-zuerich.ch/jobs-ws/JobServiceV1/JobServiceV1.wsdl';
                $endpoint = 'https://service.stadt-zuerich.ch/jobs-ws/JobServiceV1';
                $username = "xxx";
                $password = "xxx";

                $client = new nusoap_client($wsdl,true);

                $client->setEndpoint($endpoint);
                $client->namespaces = array(
                    'SOAP-ENV'=>"http://schemas.xmlsoap.org/soap/envelope/",
                    'v1'=>"http://egov.stzh.ch/jobs/service/v1"
                );
                $client->setHTTPEncoding ($enc='gzip, deflate');
                $client->loadWSDL();
                $client->soap_defencoding = 'utf-8';

                $header = '<wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd">
                    <wsse:UsernameToken>
                        <wsse:Username>'.$username.'</wsse:Username>
                        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-token-profile-1.0#PasswordText">'.$password.'</wsse:Password>
                    </wsse:UsernameToken>
                </wsse:Security>';

                $call = 'getJobs';
                $param = array();       
                $result = $client->call($call,$param,'','',$header);

                echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
                echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
                echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';

            } catch (SoapFault $e) {
                die($e->getMessage());
            }

端点也应该是正确的,我得到与SoapUI应用程序相同的标头。我无法想到任何其他问题或解决方案。

这是我的肥皂要求:

$client->setCredentials($username,$password,'basic');

这是我的肥皂反应:

<?xml version="1.0" encoding="utf-8"?>
   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://egov.stzh.ch/jobs/service/v1">
   <SOAP-ENV:Header>
        <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd">
            <wsse:UsernameToken>
                <wsse:Username>xxx</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-token-profile-1.0#PasswordText">xxx</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <getJobs xmlns="http://egov.stzh.ch/jobs/service/v1"></getJobs>
    </SOAP-ENV:Body>
   </SOAP-ENV:Envelope>

有谁知道我做错了什么?我很感激每一个帮助,因为我在这个问题上坐了几个小时。

非常感谢

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的PHP?我认为nusoap不支持PHP 7,在尝试使用PHP 7在服务器上运行nusoap时,我也有500个错误。