Почему мой фиктивный сервер Soap только возвращает пустую строку?

Это продолжение моего вопроса о удаление ожидающих заголовков.

У меня есть фиктивный мыльный сервер, имитирующий внешнюю конечную точку. Это было установлено с использованием по умолчанию 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
""

(The "" заполнитель для пустого текста.)

0

Решение

Записка, хотя и проголосовала Король Максимилиан на 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());

Хотя это работает для меня, я понятия не имею, почему это происходит.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]