2010-08-09 3 views
0

У меня есть веб-сервер, который выступает в качестве клиента SOAP для связи с сторонним SOAP-сервером. Мой клиент реализован на PHP с использованием php :: soapclient.Ошибки сервера PHP SOAP и SOAP

Каков наилучший способ проверки работоспособности сервера SOAP, поэтому я могу предоставить браузеру клиента сайту, иначе, если сервер SOAP не работает или не отвечает, сообщите пользователю, что услуга в настоящее время недоступна?

Система по существу обеспечивает компромисс сторонних услуг, предлагаемых с использованием связи между клиентом и сервером SOAP для отображения данных в браузере и позволяет пользователям взаимодействовать с третьей стороной.

ответ

2

хорошо ... один раз я работал с php soap-сервером и клиентом php soap. Я думаю, что когда клиент вызывает службу, он проходит через wsdl, и если есть проблема во время сеанса (или даже выполнения) сервера, ответ клиента будет объектом SoapFault. Id di что-то вроде

$resp = $this->client->__soapCall($serviceName,$serviceParams); 
    if (get_class($resp)=="SoapFault"){ 
     throw new Exception("Webservice error - Message: ".$resp->faultstring); 
    } 
+0

Какой тип дизайна лучше всего поймать эти исключения и уведомить пользователя о проблеме, а также сообщить администраторам сайта для отладки, чтобы определить, что пошло не так? – Chris

+0

Я бы сказал, что вы можете создать свой собственный класс SoapException, который простирается от Exception и в конструкторе вы могли бы сохранить $ resp-> faultstring в БД или отправить его админам сайта .. и для пользователей try-catch должно быть достаточно, чтобы сказать им, что возникла проблема. Я не знаю, что это «лучший», но я бы это сделал =) – pleasedontbelong

1

Вы можете позвонить по телефону http://server:1234/foo/bar?wsdl, и если вы вернете WSDL, запустите соответствующий запрос SOAP.

Если приложение не работает, вы, вероятно, не получите WSDL, и если это только часть службы, которая заставляет его висеть, вы не можете сделать это, чтобы обнаружить это заранее.

+0

Каков наилучший способ вызова некоторых WSDL в этом отношении? wget приходит на ум, но я не был уверен, есть ли лучший способ в php? – Chris

+0

file_get_contents() при условии, что вы разрешаете URL-адреса в fopen. Или проверьте заголовки cURL. – timmy

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