Показать сообщение отдельно
Старый 26.12.2006, 07:12
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
По умолчанию Web Services и вызов Документо Ориентированные (Document Оriented) операции

Автор Оригинала: rdgrimes
Оригинал: Web Services and Document-oriented Operations

Проблема
В документации не хватает главы о том, как использовать Document Oriented WSDL файлы.

Решение
Вот простой пример "login" веб сервиса, который вызывает документо ориентированный метод.

Объяснение

Код:
import mx.rpc.soap.WebService;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent; 

private var sessionID:String = new String('');
// Login user
public function login(event:flash.events.Event):void
{ 
    // create login object with 'UserID' and 'Password' properties. 
    var login:Object = new Object(); 
    login.UserID = userID_txt.text.toUpperCase();
    login.Password = password_txt.text.toUpperCase();  
    // define the loginWS web service, load the wsdl 
    // and then execute the operation, passing to it 
    // the above defined login object.  
    loginWS.useProxy = false; 
    loginWS.LoginOperation.addEventListener("result", loginResultHandler); 
    loginWS.LoginOperation.resultFormat = 'e4x'; 
    loginWS.addEventListener("fault", loginFaultHandler); 
    loginWS.loadWSDL('https://www.mydomain.com/Login.wsdl');          
    loginWS.LoginOperation(login);
}
// Handle results from login web service
private function loginResultHandler(event:ResultEvent):void
{ 
    // retrieve web service results 
    var xmlDoc:XML = new XML(loginWS.LoginOperation.lastResult); 
    sessionID = xmlDoc.*::User.@Session;
} 
// Handle faults from login web service
private function loginFaultHandler(event:FaultEvent):void
{ 
    Alert.show("Some error message here.");
}
Главное различие между RPC и Документо Ориентированными операциями состоит в том, как операции вызываются. RPC операции вызываются следующим образом:

Код:
loginWS.LoginOperation(userID_txt.text, password_txt.text);
В то время, как в Документо Ориентированных операциях, вы должны сначала создать объект (чаще всего используется паттерн проектирования - DTO/VO), добавить параметры, которые вы хотите отправить операции, и уже потом передать его как аргумент, как показанно в примере ниже:

Код:
// create login object with 'UserID' and 'Password' properties. 
var login:Object = new Object(); 
login.UserID = userID_txt.text.toUpperCase(); 
login.Password = password_txt.text.toUpperCase();
... 
loginWS.LoginOperation(login);
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^