Функция nuSoap не является допустимым методом - PullRequest
3 голосов
/ 30 июня 2011

При попытке создать экземпляр моего nuSoap метода authenticateUser он говорит:

Неустранимая ошибка: исключение Uncaught SoapFault: функция [Client] ("authenticateUser") не является допустимым методом для этой службы в /Applications/MAMP/htdocs/projo/dev/home.php:14

.

Но когда я заменяю это имя метода на то, которое уже работает, все работает просто отлично. Так что я думаю, что синтаксис инстанцирования не неправильный.

<code>/*-----------
Authenticate User
------------*/
$server->register(
    // method name
    'authenticateUser',

    // input parameters
    array('sessionUserName' => 'xsd:string', 'sessionHash' => 'xsd:string', 'user' => 'xsd:string', 'pass' => 'xsd:string'),        

    // output parameters
    array('return' => 'xsd:string'),

    // namespace
    $namespace,

    // soapaction
    $namespace . '#authenticateUser',

    // style
    'rpc',

    // use
    'encoded',

    // documentation
    'authenticates a user and returns a json array of the user info'
);

function authenticateUser($sessionUserName, $sessionHash, $user, $pass)
{
    //Check to see if a countryCode was provided
    if ($sessionUserName != '' && $sessionHash != '' && $user == $GLOBALS['wsUser'] && $pass == $GLOBALS['wsPass'])
    {

        $suid = 'AUTH'.$GLOBALS['guid'].'SESSION';


        $database   = new SQLDatabase();
        $database->openConnection();
        $database->selectDb();

        //Query
        $sql    = "SELECT * FROM members WHERE member_email='" . $sessionUserName . "' LIMIT 1";

        //Query MySQL
        $return = $database->query($sql);
        $userDetails = $database->fetch_array( $return );



        if(!empty($userDetails)) {
            $userDetails[0]['authSession'] = $suid;
            $newArr = $userDetails[0];
            $response = json_encode($newArr);
        }

        /*print $sql.'<br /><pre>';
        print_r($response);
        echo '
'; * / // выбрасываем ошибки SQL if (! mysql_query ($ sql)) { die ('Ошибка:'. mysql_error ()); } // Вернемся к успеху вернуть $ response; // Закрыть соединение mysql_close ($ CON); } еще { return 'Error: Вы должны указать все входы! x'; } }

Я могу подумать о двух вещах, которые могут вызвать эту ошибку:

  1. Скорее всего, моя регистрация функции как-то неверна, хотя wsdl gui показывает, что функция зарегистрирована правильно, и я смог успешно использовать метод через SoapUI программа.

  2. Менее вероятно: каким-то образом функция больше не нарушается, но она кэшируется, и поэтому я вижу старую ошибку.

Вопрос : При попытке использовать этот сервисный метод soap через PHP, почему я получаю ошибку вывода о том, что эта функция не существует в сервисе, когда она явно

Ответы [ 3 ]

7 голосов
/ 14 июля 2011

Установить

ini_set("soap.wsdl_cache_enabled", "0"); 

В каждом файле, из которого вы используете мыло, или установить wsdl_cache_enabled на 0 в вашем php.ini файле.

[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=0
2 голосов
/ 15 июля 2011

Если вы работаете в Linux, вы также можете напрямую удалить кэшированный файл wsdl из / tmp / dir

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

Это был КЭШ !!!глупый.Все, что мне нужно было сделать, это закрыть свой компьютер и лечь спать.Когда я проснулся, я снова запустил файл, и он работал как чудо.

Это второй раз, когда это происходит с функцией в сервисе SOAP.

Теперь мне нужно знатькак очистить кеш мыльного сервиса.(NuSOAP)

...