您好我正在尝试使用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>
有谁知道我做错了什么?我很感激每一个帮助,因为我在这个问题上坐了几个小时。
非常感谢
答案 0 :(得分:0)
您使用的是哪个版本的PHP?我认为nusoap不支持PHP 7,在尝试使用PHP 7在服务器上运行nusoap时,我也有500个错误。