我知道这是一个非常有问题的问题,我在检查了几乎所有已经问过的类似问题之后写了这个问题。在每个发布的问题中,解决方案是在表单中添加name属性,但在获取错误之前我已经完成了。
所以这就是问题所在: 我正在尝试实现一个基本的SOAP Web服务,现在只使用从提交表单传递的名称打印一个句子。在这里,我添加了客户端,服务器和表单代码。 我希望有人可以帮忙!
soapserver.php
$server = new nusoap_server;
$server->configureWSDL('server','urn:server');
$server->wsdl->schemaTargetNamespace = 'urn:server';
$server->register('register',
array('username' => 'xsd:string'), //input parameter
array('return' => 'xsd:string'), //output
'urn:server', //namespace
'urn:server#helloServer', //SOAP action
'rpc',
'encoded',
'Registrar un usuari'); //description
function register($username) {
return 'L\'usuari '.$username.' s\'ha registrat correctament!';
}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
soapclient.php
$wsdl = "http://localhost/soapserver.php?wsdl";
$client = new nusoap_client($wsdl,'wsdl');
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2>' . $err;
exit();
}
if ($_POST) {
echo $_POST;
}
if (isset($_POST["user"])) {
echo $_POST["user"];
}
soapform.html
<html>
<body>
<form name="reg_form" action="soapclient.php" method="POST">
Username: <input type="text" name="user"/>
Password: <input type="password" name="password"/>
<input type="submit" name="submit" value="Sign up"/>
</form>
</body>
</html>
我提交表单时得到的结果是什么,因为isset($ _ POST [“user”])和isset($ _ POST)返回false,因此没有任何反应。
答案 0 :(得分:3)
我只是将其作为答案发布,以便任何有同样问题的人都可以轻松找到答案。
我只是通过$ _REQUEST改变$ _POST来解决这个问题,即使我还不知道为什么其他方式不会工作...
修改:在深入检查之后,我已经看到Chrome发送的请求是GET请求,而它必须是POST。所以最后我已修复它将操作从auto tmp_func = bind(some_func, placeholders::_1, placeholders::_2, ...other_parameters);
pool.add_task(i_from, i_to, tmp_func);
更改为i_max
,现在它发送了一个POST,变量$ _POST具有用户名的值。
答案 1 :(得分:2)
你可以尝试
if ((!is_array($_POST)) || (count($_POST) < 1)) {
$_POST = json_decode(file_get_contents('php://input'), true)
}