У меня проблемы с моим сервером Soap, реализованным на PHP на моем производственном сервере (удаленном).
Я реализовал простой сервер Soap (собственный класс PHP) с функцией on on в режиме WSDL.
Итак, мой код выглядит так:
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("wsSeguimiento.wsdl");
$server->addFunction("ResultadoDetalleExtendido");
$server->handle();
Теперь, как вы знаете, когда вы вызываете сервер через веб-браузер с URL-адресом типа "http://localhost/soapserver/wsServer.php",, вы получаете пустую страницу - в моем случае - или все, что вы там запрограммировали (код сервера).
Но если вы вызываете тот же URL с "? Wsdl" в конце "http://localhost/soapserver/wsServer.php?wsdl",, то сервер (я полагаю, что это функция дескриптора) разрешает XML wsdl в веб-браузере, поэтому вы получаете текстовый / текстовый тип содержимого и вы можете увидеть само определение XML.
Теперь это работает в моей среде разработки. Нет проблем.
Я создал клиент Soap, чтобы протестировать мой собственный сервер и посмотреть, вернет ли он ожидаемый ответ, и все работает нормально.
Но когда я загружаю код на рабочий сервер, он не работает.
Firefox показывает в URL с вызовом «? Wsdl» типичную ошибку, говорящую «XML is malformed», но в данном конкретном случае это с самого начала, как если бы вообще не было XML-файла.
И если я использую свой клиент, я получаю ошибку:
SOAP-ERROR: синтаксический анализ WSDL: не удалось загрузить из 'http: //.../SOAP_SERVER/seguimientoServer.php? Wsdl': начальный тег ожидается, '<' не найден </strong>
Я правильно изменил пространства имен и URL-адреса в XML-файле WSDL. Так что это должно работать правильно. Но это не так.
Я обнаружил, что существуют существующие ошибки, связанные с самим заголовком HTTP, основанные на кусочных данных, длине контента, X-powered-by, что угодно ...
Но я не вижу решения.
Я сделал небольшой взлом на моем сервере, основываясь на этом (после вызова handle ()):
if( isset($_REQUEST['wsdl']) )
{
ob_clean();
echo file_get_contents( "wsSeguimiento.wsdl" );
}
И с этим, это действительно работает! Но я уверен, что это не должен быть способ решить это ...