2016-11-23 1 views
0

Это вопрос относительно моего вопроса о removing the expect headers.Почему мой mock Soap Server возвращает только пустую строку?

У меня есть mock soap-сервер, имитирующий внешнюю конечную точку. Она была создана с использованием по умолчанию SoapServer РНР:

$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 
"" 

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

ответ

0

в записке, хотя 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()); 

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

Смежные вопросы