2013-03-05 1 views
3

Я работаю над веб-сервисом с использованием SoapServer в PHP. Раньше я делал еще один веб-сервис, используя точно такую ​​же технику. Мой новый проект находится на одном сервере, но в другом подкаталоге. В URL-адресе службы и soapserver указан номер версии. Это мой путь SoapServer создан в PHP:PHP SoapServer ampersand закодирован

$server = new SoapServer("https://".DOMAIN."/webservice/index.php?v=1.0.0&wsdl=1"); 
$server->setClass('SoapHandler'); 
$server->handle(); 

Весь PHP страница одно и то же в моем примере Soap Service, только URL-адрес отличается конечно. Когда я делаю вызов к WebService с SoapUI, возвращается следующее сообщение об ошибке:

SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://myurl.com/webservice/index.php?v=1.0.0&wsdl=1' : failed to load external entity "https://myurl.com/webservice/index.php?v=1.0.0&wsdl=1" 

Как вы можете видеть, амперсанд заменяется &. Я попытался изменить кодировку на UTF-8, это тоже не сработает.

Кто может мне помочь?

ответ

1

У нас был .htaccess, разрешающий только мой IP-адрес, а также IP-адрес сервера. Удаление этого разрешило проблему. Спасибо за вашу помощь!

2

Вы должны включить модуль openssl в свой файл php.ini. В противном случае вы не сможете получить доступ к домену с помощью SSL (https).

В противном случае вы должны проверить свой домен с локального сервера и проверить возврат файла WSDL с помощью curl или lynx.

+0

Другой веб-сервис находится в том же домене (и, следовательно, на веб-сервере), и это действительно работает. Поэтому я предполагаю, что настройки моего веб-сервера в порядке? – harmjanr

+0

Вы можете проверить это с помощью phpinfo. SSL в Apache - это другое дело, поскольку php openssl жаль, что я обновил свой ответ. Вы должны включить свой openssl в файле php.ini. – Stony

+0

SSL включен, я проверил его с помощью phpinfo. Но SSL настроен для всего сервера в php.ini, а другой сервис Soap на том же сервере работает. – harmjanr