Я пытаюсь создать свой первый веб-сервер SOAP, но мне не удалось. Я пробовал несколько учебных пособий, но ни одно из них не работает. Ниже приведено то, что я пробовал до сих пор:
Серверный скрипт:
require_once "lib/nusoap.php";
function getProd($category) {
if ($category == "books") {
return join(",", array(
"The WordPress Anthology",
"PHP Master: Write Cutting Edge Code",
"Build Your Own Website the Right Way"));
}
else {
return "No products listed under that category";
}
}
$server = new soap_server();
$server->soap_defencoding = 'utf-8';
$server->register("getProd");
$server->service($HTTP_RAW_POST_DATA);
Клиентский скрипт:
<code>require_once "lib/nusoap.php";
$client = new nusoap_client("https://mydomain/soap_server.php");
$client->soap_defencoding = 'utf-8';
$error = $client->getError();
if ($error) {
echo "<h2>Constructor error</h2><pre>" . $error . "
";
}
$ result = $ client-> call ("getProd", array ("category" => "books"));
if ($ client-> fault) {
echo "
Fault
";
print_r($result);
echo "
";
}
еще {
$ error = $ client-> getError ();
if ($ error) {
echo "
Error
" . $error . "
";
}
еще {
echo "
Books
";
echo $result;
echo "
";
}
}
echo '
Запрос
' . htmlspecialchars($client->request, ENT_QUOTES) . '
';
echo '
Response
' . htmlspecialchars($client->response, ENT_QUOTES) . '
';
echo '
Debug
' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '
';
Когда я звоню на мою страницу https://mydomain/soap_client.php
я получаю
Fault
Array
(
[faultcode] => SOAP-ENV:Client
[faultactor] =>
[faultstring] => error in msg parsing:
xml was empty, didn't parse!
[detail] =>
)
Запрос
POST /dss/soap_server.php HTTP/1.0
Host: mydomain
User-Agent: NuSOAP/0.9.5 (1.123)
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 507
<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns9471:getProd xmlns:ns9471="http://tempuri.org"><category xsi:type="xsd:string">books</category></ns9471:getProd></SOAP-ENV:Body></SOAP-ENV:Envelope>
Ответ
HTTP/1.1 500 Internal Server Error
Server: nginx
Date: Sun, 26 Aug 2018 07:49:26 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 684
Connection: keep-alive
X-SOAP-Server: NuSOAP/0.9.5 (1.123)
<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode><faultactor xsi:type="xsd:string"></faultactor><faultstring xsi:type="xsd:string">error in msg parsing:
xml was empty, didn't parse!</faultstring><detail xsi:type="xsd:string"></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
Я также могу предоставить htmlspecialchars($client->debug_str, ENT_QUOTES)
при необходимости.
Не могли бы вы помочь мне найти способ решения проблемы?
Любая помощь будет оценена.
Спасибо.