У меня есть 3 клиентских сайта, все из которых зависят от внешнего веб-сервиса.Веб-сервис раньше находился на сервере ColdFusion, но он только что перешел на сервер .NET.Мой клиентский код больше не работает, и мне не везет исправлять его.Клиентские сайты находятся на php и используют nusoap для вызова веб-службы.
Я настроил этот тест, используя wsdl, как я делал это:
<code><?php
// Call the nuSOAP library
require_once('/home/realtywest/www/lib/nusoap.php');
// Create the client instance
$client = new soapclientnusoap('http://webservices.reiwa.com/RMHPServices/ListingsService.svc?wsdl', true);
// Check for an error
$err = $client->getError();
if ($err) {
// Display the error
echo '<h2>Constructor error</h2><pre>' . $err . '
';// На данный момент вы знаете, что следующий вызов завершится неудачей} // Вызовите метод SOAP $ result = $ client-> call ('getListingDetail', array ('ListingNumber' => 3000975));// Проверка на наличие ошибки if ($ client-> fault) {echo '
Fault
';
print_r($result);
echo '
';} else {// Проверка на ошибки $ err = $ client-> getError ();if ($ err) {// Показать ошибку echo '
Error
' . $err . '
';} else {// Показать результат echo '
Result
';
print_r($result);
echo '
';}} // Показать запрос и ответ echo '
Request
';echo '
' . htmlspecialchars($client->request, ENT_QUOTES) . '
';echo '
Response
';echo '
' . htmlspecialchars($client->response, ENT_QUOTES) . '
';// Показать сообщения отладки echo '
Debug
';echo '
' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '
';?>
Результаты этого сценария можно увидеть здесь: http://www.realtywest.com.au/listings/test_wsdl.php
, который возвращает внутреннюю ошибку службы ..
Я погуглил свою проблему и нашелэто действительно старое сообщение на форуме: http://www.sitepoint.com/forums/showthread.php?t=97632, где они предположили, что иногда веб-сервисы .NET настраиваются по-другому, и не передавать его в nusoap как wsdl, также при вызове, чтобы фактически передать запрос, а не просто массивпеременные ..
, поэтому я попробовал так:
<code><?php
// Call the nuSOAP library
require_once('/home/realtywest/www/lib/nusoap.php');
// Create the client instance
$client = new soapclientnusoap('http://webservices.reiwa.com/RMHPServices/ListingsService.svc', false);
// Check for an error
$err = $client->getError();
if ($err) {
// Display the error
echo '<h2>Constructor error</h2><pre>' . $err . '
';// На данный момент вы знаете, что следующий вызов завершится неудачей} // Вызовите метод SOAP $ result = $ client-> call ('getListingDetail', '3000975«);// Проверка на наличие ошибки if ($ client-> fault) {echo '
Fault
';
print_r($result);
echo '
';} else {// Проверка на ошибки $ err = $ client-> getError ();if ($ err) {// Показать ошибку echo '
Error
' . $err . '
';} else {// Показать результат echo '
Result
';
print_r($result);
echo '
';}} // Показать запрос и ответ echo '
Request
';echo '
' . htmlspecialchars($client->request, ENT_QUOTES) . '
';echo '
Response
';echo '
' . htmlspecialchars($client->response, ENT_QUOTES) . '
';// Показать сообщения отладки echo '
Debug
';echo '
' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '
';?>
См. Здесь: http://www.realtywest.com.au/listings/test.php на этот раз ошибка действия не поддерживается. Запрос, отправленный во втором сообщении, был скопирован из пользовательского интерфейса SOAP, где я могу получить результаты, поэтому я знаю, что веб-сервис действительно работает ..
Я уверен, что кто-то может взглянуть на сообщения отладки и узнать, в чем проблема ... Я был бы очень признателен за любую помощь по этому вопросу ...