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)"/>