Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Передача параметров WebService (http://www.flasher.ru/forum/showthread.php?t=152705)

Haiat 29.03.2011 15:24

А как отправить запрос на WDSL без операции. то есть отправить xml запрос на WDSL. А сам метод (который мы указывали в operation) будет прописан в xml

сейчас отправляется вот так:

Код AS3:

var operation:AbstractOperation  = webService.getOperation("searchFlights");
                                var arguments:XML = ..........
operation.arguments = arguments;
 operation.send();

смотрел в документации, искал примеры. нашел как просто отправлять запрос, но без аргументов. а мне нужно все как было, просто без указания операции

(примерно так прописываться будет метод)

Код:

<searchFlights xmlns:ns2="http://ws.alliance.server.xtrip.gridnine.com/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

alatar 29.03.2011 16:03

через URLLoader можете отправить. Только придется сомостоятельно формировать запрос.

Haiat 29.03.2011 16:18

мм.. интересно! а он дает весь необходимый функционал?

я пользовался URLLoader, но только как для погрузки XML и работы с ним. то есть он же просто возращает XML

Код AS3:

                private function button_click():void {
                                var urlRequest:URLRequest = new URLRequest("http://alliance.gridnine.com:9090/alliance/ws?wsdl");
                                urlLoader = new URLLoader();
                                urlLoader.addEventListener(Event.COMPLETE, completeListener);
                                urlLoader.load(urlRequest);
                        }
                        private function completeListener(e:Event):void {
                                novel = new XML(urlLoader.data);
                                trace(novel.toXMLString());
                        }

а запрос на XML?и как составлять запрос?

Спасибо!

alatar 29.03.2011 16:25

Цитата:

мм.. интересно! а он дает весь необходимый функционал?
Нет. Весь необходимый функционал придется реализовывать самостоятельно.

Haiat 31.03.2011 14:43

на самом деле получилось все передать!

нужно было так:
Код:

<ws:searchFlights  xmlns:ws="http://ws.alliance.server.xtrip.gridnine.com/">
        <parameters>

и все шикарно.

огромное спасибо за помощь! только один вопрос хочу задать. мне нужно избавить от mxml. то есть чисто все на AS3

нужно переделать на AS это
Код:

<mx:WebService id="webService" wsdl="http://alliance.gridnine.com:9090/alliance/ws?wsdl">
      <mx:operation name="searchFlights"
                resultFormat="object"
                result="get_result(event);"
                fault="get_fault(event);" >
        </mx:operation>
</mx:WebService>

пытался так

Код AS3:

var ws:WebService = new WebService("http://alliance.gridnine.com:9090/alliance/ws?wsdl");
        //ws.wdsl = "http://alliance.gridnine.com:9090/alliance/ws?wsdl";
        //ws.searchFlights.send();
 
        var operation:AbstractOperation  = ws.getOperation("searchFlights");
        var arguments:XML = // ТУТ ОЧЕНЬ НУЖНЫЙ ДЛЯ ОТПРАВКИ XML ЗАПРОС;
 
      operation.arguments = arguments;
      operation.send();

firebug не показывает даже попытку отправить запрос. ничего не уходит. пытался сделать с помощью заккоментированных строк. тоже ничего не выходит

PS: удалил предыдущий вопрос открытый, так как в нем разобрался, и он не актуален)

alatar 31.03.2011 15:11

Код AS3:

var ws:WebService = new WebService("http://alliance.gridnine.com:9090/alliance/ws?wsdl");
ws.wdsl = "http://alliance.gridnine.com:9090/alliance/ws?wsdl";
ws.loadWSDL();


Haiat 31.03.2011 15:32

выкидывает ошибку:
Код:

[Fault] exception, information=Error: Cannot assign operations into an RPC Service (wdsl)
даже если ничего не отправлять. то есть без loadWSDL. ему вторая строка не нравится. может я что то не так подключаю в import:

Код:

import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        import flash.utils.*;
        import flash.text.*;
       
        import mx.rpc.soap.mxml.Operation;
        import mx.rpc.soap.mxml.WebService;
        //import mx.rpc.soap.*;
    import mx.utils.ObjectUtil;
        import mx.rpc.*;


alatar 31.03.2011 15:54

Код AS3:

ws.wsdl = ...


Haiat 31.03.2011 16:25

БЛИН! сори за невнимательность!

Вообщем получилось! Спасибо

Выкладываю код, возможно кому то пригодится:

Код AS3:

var ws:WebService = new WebService("http://alliance.gridnine.com:9090/alliance/ws?wsdl");
ws.wsdl = "http://alliance.gridnine.com:9090/alliance/ws?wsdl";
ws.loadWSDL();
 
 
var operation:AbstractOperation  = ws.getOperation("searchFlights");
var arguments:XML = // XML запрос;
operation.arguments = arguments;
operation.send();
 
ws.addEventListener("result", getResult);
ws.addEventListener("fault", getFault);
 
 
                private function getResult(e:Event):void {
                        trace(1);
                }
 
                private function getFault(e:Event):void {
                        trace(2);
                }


alatar 31.03.2011 18:20

Собственно send() возвращает AsyncToken. Если у вас класс реализует IResponder, то можете просто написать:
Код AS3:

operation.send().addResponder(this);
...
public function result(data:Object):void
{
  //сюда придет результат
}
 
public function fault(info:Object):void
{
  //сюда придет ошибка
}



Часовой пояс GMT +4, время: 18:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.