SOAP-ответ в Flex 4

Я работаю с Pingdom API в приложении Flex 4 AIR и использую построитель Data/Services, встроенный в Flash Builder 4. API Pingdom построен на SOAP (по крайней мере, на данный момент), и Flash Builder 4 смог импортировать WSDL файл просто отлично, но когда я пытаюсь отправить запрос Auth_login в моем токене, переменная результата равна нулю. Я не уверен, что я смотрю не в том месте, или как. Чтобы быть точным, я смотрю на Auth_loginResult.token.result для значения.

Является ли token.result правильным местом для поиска? Если результат равен нулю, это в любом случае выяснить, почему он равен нулю, то есть проверять, доступен ли WSDL или нет, и является ли это действительным запросом?

Я запускаю Net Monitor в приложении, чтобы убедиться, что он подключен к сети.

Мой код следующий для процесса входа в систему

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:pingdomapi="services.pingdomapi.*"
        title="Login">
    <fx:Script>
        <![CDATA[
            import valueObjects.Auth_CredentialsData;


            protected function login(event:MouseEvent):void
            {
                var credentials:Auth_CredentialsData = new Auth_CredentialsData;
                credentials.username = txt_username.text;
                credentials.password = txt_password.text;
                Auth_loginResult.token = pingdomAPI.Auth_login('****',credentials);
                trace(Auth_loginResult.token.result);
            }
        ]]>
    </fx:Script>
    <fx:Declarations>
        <s:CallResponder id="Auth_loginResult"/>
        <pingdomapi:PingdomAPI id="pingdomAPI"/>
    </fx:Declarations>
    <s:Label x="10" y="10" text="Username"/>
    <s:TextInput id="txt_username" x="10" y="41" text="david.long@cagedata.com"/>
    <s:Label x="10" y="104" text="Password"/>
    <s:TextInput id="txt_password" x="10" y="135" displayAsPassword="true" text="Simpsons#1"/>
    <s:Button id="btn_login" y="198" right="30" label="Login" click="login(event)"/>
</s:View>

3 ответа

Решение

После того, как этот вопрос будет рассмотрен, я собираюсь закрыть его, так как в этом случае возникает ошибка в WSDL API Pingdom. Я сообщу об ошибке и надеюсь, что она будет исправлена ​​в будущем с помощью нового API REST.

В соответствии с этим вы должны искать элемент sessionId в Auth_LoginResponse.

Даже если этот вопрос был оставлен, кто-то может пройти мимо с тем же вопросом.

Причина, по которой результат равен нулю, заключается в том, что вызов является асинхронным. Ответ еще не пришел, когда Дейв попытался его отследить.

Вместо этого проследите в обработчике результатов и / или ошибок CallResponder Auth_loginResult, например так:

<s:CallResponder id="Auth_loginResult" result="trace(event.result)" error="trace(event)"/>
Другие вопросы по тегам