Как мне использовать php для работы с веб-сервисом, который я создал с помощью gSoap и C ++? - PullRequest
0 голосов
/ 07 июля 2011

Я создал пример службы калькулятора gSOAP, найденный по адресу: http://www.genivia.com/Products/gsoap/demos/index.html

У меня есть веб-служба, работающая в качестве демона на моей коробке Solaris.

Теперь я пытаюсь использоватьстраница php, чтобы поразить этот новый веб-сервис.Я смотрел на http://www.php.net/manual/en/class.soapclient.php, и пытался привести пример, но мне не повезло.Может кто-нибудь, пожалуйста, укажите мне пример этого?или покажи код для этого?

Я провел два дня, просматривая веб-сайты и пробуя разные вещи, и у меня заканчивается время на моем проекте.Большое спасибо за вашу помощь.

fyi: мой сервер apache настроен на порт 7000.

<?php

function customError($errno, $errstr)
{
  echo "<b>Error: </b> [$errno] $errstr";
}

set_error_handler("customError");

define("SOAP_ENCODED", 1);
define("SOAP_RPC", 1);

$options = array(
 'compression'=>true,
 'exceptions'=>false,
 'trace'=>true,
 'use' => SOAP_ENCODED,
 'style'=> SOAP_RPC,
 'location'=> "http://localhost:7000",
 'uri' => "urn:calc"
);

echo "1";

$client = @new SoapClient(null, $options);

echo "2";

$args = array(2, 3);

$ret = $client->__soapCall("add", $args);

echo "3";

if (is_soap_fault($ret))
{
  echo 'fault : ';
  var_dump($client->__getLastRequest());
  var_dump($client->__getLastRequestHeaders());

}
else
{
echo 'success : ';
  print '__'.$ret.'__';
}

$client->ns__allAllowed();
?>

Веб-страница не возвращает никаких ошибок.

Michael

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Вверху скрипта:

error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);

Что нужно проверить:

  • Включить подпись Unicode (BOM) выключено в вашем редакторе
  • Нет пробела после ?> (Вы должны просто удалить его)
  • Запустить скрипт в кли php /path/myscript.php
0 голосов
/ 07 июля 2011

В руководстве, которое вы упомянули, написано, что веб-сервис Calc генерирует WSDL . WSDL - это файл, который описывает все методы и типы веб-сервисов. Помня об этом, вы можете создать SOAP-клиент на PHP:

$client = new SoapClient('http://www.mysite.com/calc.wsdl',
                          array('trace' => true, 'exceptions' => true));

Затем вы можете вызвать любой метод, предоставляемый веб-сервисом:

try {
    $client = new SoapClient('http://www.mysite.com/calc.wsdl',
                          array('trace' => true, 'exceptions' => true));

    $result = $client->methodName($param1, $param2);
} catch (SoapFault $e) {
    var_dump($e);
}

var_dump($result);

Если произойдет какая-либо ошибка, вы поймаете ее в блоке try / catch.

...