为什么我的模拟肥皂服务器只返回空字符串?
问题描述:
这是关于removing the expect headers的问题的后续处理。为什么我的模拟肥皂服务器只返回空字符串?
我有一个模拟肥皂服务器模仿外部端点。它的成立,通过使用默认SoapServer
PHP的:
$server = new SoapServer('http://externalapi.foo/the_wsdl.xml');
$server->setClass(ExternalApi::class);
$server->handle($HTTP_RAW_POST_DATA);
一旦我删除客户端预计头这工作之前,我只得到一个空的响应返回,不管请求让我接受失败:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html
Date: Wed, 23 Nov 2016 11:18:40 GMT
Server: nginx/1.11.6
Transfer-Encoding: chunked
X-Powered-By: HHVM/3.15.3
""
(该""
是空文本占位符。)
答
的说明,即使downvoted,通过king maxemilian on php.net我指出了正确的方向。他们写道:
有时,它发生PHP不检测
$HTTP_RAW_POST_DATA.
什么为了解决这个问题,使其在任何情况下工作:
function soaputils_autoFindSoapRequest() { global $HTTP_RAW_POST_DATA; if($HTTP_RAW_POST_DATA) return $HTTP_RAW_POST_DATA; $f = file("php://input"); return implode(" ", $f); } $server = new SoapServer($wsdl); $server->setClass($MyClass); $server->handle(soaputils_autoFindSoapRequest());
我简化了这个为我的模拟肥皂服务器
/**
* @return string
*/
function findSoapRequest() {
$f = file("php://input");
return implode(" ", $f);
}
$server->handle(findSoapRequest());
虽然这对我有用,但我不知道为什么会发生这种情况。