我是webservices和soap的新手,我遵循了一个教程,并得到了以下代码:
SOAP Server:
<?php
include("lib/nusoap.php");
include("getDB.php");
function getUsers()
{
$user_id = $_GET['user_id'];
$result = mysql_query("SELECT * FROM -table name- WHERE user_id = '$user_id'");
$try = mysql_fetch_array($result);
return join(",", array(
$result['username'], $result['password']
));
}
$server = new soap_server();
$server->register("getUsers");
$server->service($HTTP_RAW_POST_DATA);
?>
SOAP Client:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<!-- Error Reporting -->
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
</head>
<body>
<?php
include("lib/nusoap.php");
$client = new nusoap_client("http://localhost/wp-content/themes/blackbird/phpwizard/HTML5Application/public_html/Webservice.php?user_id=4");
$error = $client->getError();
if ($error)
{
echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
}
$result = $client->call("getUsers", array("category" => "books"));
if ($client->fault)
{
echo "<h2>Fault</h2><pre>";
print_r($result);
echo "</pre>";
}
else
{
$error = $client->getError();
if ($error)
{
echo "<h2>Error</h2><pre>" . $error . "</pre>";
}
else
{
echo "<h2>Books</h2><pre>";
echo $result;
echo "</pre>";
}
}
?>
</body>
</html>
现在,当加载SOAP客户端时,我得到错误:
第3行解析SOAP有效负载的XML错误:保留的XML名称
我不知道为什么会这样
尝试删除此问题中提到的<?xml
之前的空白
解析SOAP有效负载的XML错误:保留的XML名称
也可以粘贴NuSOAP客户端的转储,就像在那个问题中一样,这样我们就可以看到渲染的内容。让我们从这里开始调试,并使用您在示例中看到的内容进行响应。
另外,这里有一个我过去用过的教程。Php本身可以很好地与SOAP一起工作,所以在添加一个单独的库层之前请尝试一下,除非您需要它的任何特殊功能。试试这个例子,看看它是否适合你。
IBM Opensource Php SoapServerClient示例