Форум 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 21.03.2011 23:31

Передача параметров WebService
 
Все доброго времени суток:

если взять на примере из одного блога следующий скрипт, как передать параметры?

Код AS3:

<mx:WebService id="webService"
            wsdl="http://www.flash-mx.com/ws/months.cfc?wsdl">
        <mx:operation name="getMonths"
                resultFormat="object"
                result="getMonths_result(event);"
                fault="getMonths_fault(event);" />
    </mx:WebService>

Цитата:

Каждый вызов любого метода сервиса требует передачи набора параметров для авторизации
например agent=1 pass=2

так?

Изначально думал что нужно вставлять их в тэг operation, но там оказывается нельзя пользовательские параметры вставлять

пробовал так:

Код AS3:

<mx:WebService id="webService"
            wsdl="http://www.flash-mx.com/ws/months.cfc?wsdl" agent="1" pass="2">

выходит ошибка

Цитата:

[Fault] exception, information=Error: Cannot assign operations into an RPC Service (agent)

Astraport 21.03.2011 23:53

А так?

Код AS3:

<mx:operation name="getMonths"
                resultFormat="object"
                result="getMonths_result(event);"
                fault="getMonths_fault(event);" >
      <mx:request>
<agent>1</agent>
<pass>2</pass>
      </mx:request>
    </mx:operation>


Haiat 22.03.2011 00:03

как я понимаю result выполняется если все нормально, а fault если ошибка.

ну так вот если я вообще параметры не передаю, то срабатывает result , вызывается функция:

Код AS3:

private function getMonths_result(evt:ResultEvent):void {
                textArea.text = ObjectUtil.toString(evt.result);
            }

и дает следующий результат:
Цитата:

(Object)#0
messages = (mx.collections::ArrayCollection)#1
filterFunction = (null)
length = 1
list = (mx.collections::ArrayList)#2
length = 1
source = (Array)#3
[0] (Object)#4
details = "java.lang.NullPointerException
at com.gridnine.xtrip.server.alliance.ws.AllianceWebService.selectFOP(AllianceWebService.java:411)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:471)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:619)"
message = "фатальная ошибка ?"
type = "ERROR"
uid = "BD56296A-F4C4-8D90-4B3F-DA0245B4BD97"
sort = (null)
source = (Array)#3
а если я вставлю нужные входные данные, черех <mx:request> То срабатывает по fault функция
Код AS3:

private function getMonths_fault(evt:FaultEvent):void {
                                textArea.text = ObjectUtil.toString(evt.fault);
            }

и выдает
Цитата:

(mx.rpc::Fault)#0
content = (null)
errorID = 0
faultCode = "EncodingError"
faultDetail = (null)
faultString = "Unexpected parameter 'agent' found in input arguments."
message = "faultCode:EncodingError faultString:'Unexpected parameter 'agent' found in input arguments.' faultDetail:'null'"
name = "Error"
rootCause = (null)

alatar 22.03.2011 12:05

Цитата:

а если я вставлю нужные входные данные, черех <mx:request> То срабатывает по fault функция
На этом сервисе getMonths вообще не принимает параметров, тем более ни про какой 'agent' он понятия не имеет.
Код:

<wsdl:message name="getMonthsRequest"></wsdl:message>

Haiat 22.03.2011 13:21

alatar я это понимаю! я просто как пример спрашиваю! то есть у меня другой пример,
все ошибки я выложил со своего примера.
то есть клиент говорит мне что должны передаваться 4 параметра для авторизации. в самом WDSL описании я их не увидел нигде(наверно их не должно быть там видно,или должно?)
Цитата:

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

спасибо

alatar 22.03.2011 13:48

Цитата:

не совсем понимаю как их передавать, пробовал по разному
В arguments операции передается объект с параметрами. Либо при вызове send(). Либо в request, но тогда надо приводить операцию к Operation, т.к. getOperation возвращает AbstractOperation. Ожидаемые параметры описываются в wsdl в тегах message.

Haiat 22.03.2011 14:06

вот у меня такой скрипт:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">
 
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            import mx.utils.ObjectUtil;
 
            private var startTime:int;
            private var endTime:int;
 
            private function button_click():void {
                webService.searchSchedule.send();
                startTime = getTimer();
                lbl.text = "";
            }
 
            private function get_result(evt:ResultEvent):void {
                textArea.text = ObjectUtil.toString(evt.result);
                calcTime();
            }
 
            private function get_fault(evt:FaultEvent):void {
                Alert.show(evt.type);
                calcTime();
            }
 
            private function calcTime():void {
                endTime = getTimer();
                lbl.text = "total time: " + (endTime - startTime) + "ms";
            }
        ]]>
    </mx:Script>
    <mx:WebService id="webService" wsdl="http://alliance.gridnine.com:9090/alliance/ws?wsdl">
        <mx:operation name="searchSchedule" resultFormat="object" result="get_result(event);" fault="get_fault(event);" />
    </mx:WebService>
 
    <mx:ApplicationControlBar dock="true">
        <mx:Button id="button"
                label="get months from web service"
                click="button_click();" />
        <mx:Spacer width="100%" />
        <mx:Label id="lbl" />
    </mx:ApplicationControlBar>
 
    <mx:TextArea id="textArea"
            editable="false"
            width="100%"
            height="100%" />
 
</mx:Application>

подключаюсь к WDSL http://alliance.gridnine.com:9090/alliance/ws?wsdl

в нем я не вижу параметров agent и password, но мне говорят что их нужно передавать для авторизации

что я делаю не так? потому что я вызываю метод - а он возвращает ошибки которые я выше писал

alatar 22.03.2011 14:12

У меня не выдает этот wsdl, выложите все, что в message для searchSchedule

Haiat 22.03.2011 14:13

посмотрите исходный код, открывшейся страницы.

там есть это
Код:

<message name="searchSchedule">
<part name="parameters" element="tns:searchSchedule" />
</message>

это
Код:

<operation name="searchSchedule">
<input message="tns:searchSchedule" />
<output message="tns:searchScheduleResponse" />
<fault message="tns:Exception" name="Exception" />
</operation>

и это
Код:

<operation name="searchSchedule">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="Exception">
<soap:fault name="Exception" use="literal" />
</fault>
</operation>


alatar 22.03.2011 14:35

Ну он принимает некие parameters, странно, что тип не указан.
Обычно описывается в виде complexType или simpleType.
Скорее всего, что-то типа:
Код AS3:

var arguments:Object = {parameters: {agent: bond, password: james}};


Haiat 22.03.2011 15:06

вот так пытаюсь передать, он выдает ту же большую ошибку, но только вместо "фатальная ошибка ?" пишет "фатальная ошибка нет данных для авторизации"
Код AS3:

private function button_click():void {
                                var arguments:Object = {parameters: {agent: '1', password: '2',salesPoint:'SKY-BUTIK',locale:'en'}};
 
                webService.searchSchedule.send(arguments);
            }


alatar 22.03.2011 15:19

Ну это уже с серверниками выясняйте, что они ожидают получить. Без описания типа, не ясно какие данные ожидаются.
Попробуйте просто передать:
Код AS3:

{agent: '1', password: '2',salesPoint:'SKY-BUTIK',locale:'en'}


Haiat 22.03.2011 15:24

Спасибо alatar, да я им этот вопрос уже с утра задал. жду ответа, а пока пытаюсь сам во все вникнуть, как оно работает во flex.

а по поводу связки с графикой, как я понимаю, я могу сделать swf во FLASH, сюда его импортировать, и буду иметь доступ к мувикам которые там есть?

хочу сделать прелоадер, пока грузятся данные

Цитата:

сам во все вникнуть
это я конечно загнул)) с Вашей помощью)

alatar 22.03.2011 15:31

Цитата:

а по поводу связки с графикой, как я понимаю, я могу сделать swf во FLASH, сюда его импортировать, и буду иметь доступ к мувикам которые там есть?
С теми же условиями, что и в pureAS3.

Добавлено через 37 секунд
Ну и как бы это уже другой вопрос.

Haiat 22.03.2011 16:59

а как можно проверить загрузился ли WDSL или нет?

грубо говоря, мне это нужно для того чтобы сделать кнопку "данные приняты - посмотреть"?

смотрел тут: http://help.adobe.com/ru_RU/AS3LCR/F...rvice.html#top

кстати не совсем понял почему там нет моей функции send, в документации. Это разные пакеты?

alatar 22.03.2011 17:20

Цитата:

а как можно проверить загрузился ли WDSL или нет?
Будет отправлено событие LoadEvent.LOAD
Цитата:

кстати не совсем понял почему там нет моей функции send, в документации.
send() у AbstractOperation, в не у WebService. Когда вы пишете:
Код AS3:

webService.searchSchedule.send();

это равнозначно
Код AS3:

var operation:AbstractOperation =  webService.getOperation("searchSchedule");
operation.send();


Haiat 23.03.2011 14:35

Появилась информация касательно типа. Подскажи пожалуйста как правильно запрос составить

Цитата:

Все вызовы веб-сервиса требуют передачи набора параметров, характеризующих контекст вызывающего агента. В WSDL этотконтекст описантипом AuthContext.
еще есть файл xml,в котором нашел следующее
Код AS3:

<xs:complexType name="AuthContext"> 
<xs:sequence>
<xs:element name="locale" type="xs:string" />
<xs:element name="agent" type="xs:string" />
<xs:element name="password" type="xs:string" />
<xs:element name="salesPoint" type="xs:string" />
<xs:element name="customer" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>


alatar 23.03.2011 14:51

Код AS3:

var operation:AbstractOperation  = webService.getOperation("searchSchedule");
var arguments:Object = {parameters: {locale: "en" agent: "bond", password: "james bond", salePoints:"SKY-BUTIK", customer:"casino royal"}};
operation.arguments = arguments;
operation.send();

или в виде xml
Код AS3:

var arguments:XML = new XML('<parameters>
    <locale>en</locale>
    <agent>bond</agent>
    <password>james bond</password>
    <salesPoint>SKY-BUTIK</salesPoint>
    <customer>casino royal</customer>
</parameters>'
);


Haiat 23.03.2011 18:22

Наконец то стал въезжать) ну и замудрено же все))

вопрос такой: когда я передаю параметры по следующей схеме. стоит ли обращать внимание на <xs:sequence> <xs:complexType> <xs:element name="route"> ?

я имею ввиду нужно ли как то в моем XML который я отправляю их указывать?
Код:

<xs:complexType name="FlightSearchParameters">
  <xs:complexContent>
    <xs:extension base="tns:BaseParameters">
      <xs:sequence>
        <xs:element name="airlines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airline" type="tns:DictionaryItem" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="route">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="segment" type="tns:RouteSegment" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="adults" type="xs:int" />
        <xs:element name="children" type="xs:int" />
        <xs:element name="infants" type="xs:int" />
        <xs:element name="serviceClass" type="tns:classOfService" minOccurs="0" />
        <xs:element name="directOnly" type="xs:boolean" />
        <xs:element name="mixedVendors" type="xs:boolean" />
        <xs:element name="dateTolerance" type="xs:int" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>


alatar 23.03.2011 18:52

Нет. Это просто описание объекта. Можно использовать это для создания объектов во флексе, если указать для операции resultFormat = "object".
По-умолчанию, если указан "object" WebService будет штамповать объекты со свойствами которые указаны в типах. Если дополнительно, для WebService, установлен makeObjectsBindable = true (установлен по-умолчанию), то будут созданы ObjectProxy, для которых возможен биндинг.
Но все это, при более-менее большом количестве объектов, весело тормозит.
Для каждой операции можно указать свой encoder и decoder, который будет выдавать нужные объекты.

Haiat 23.03.2011 19:55

Допустим я вызываю следующий метод "searchFlights".

смотрю в описании

Код:

<xs:complexType name="searchFlights">
<xs:sequence>
<xs:element name="parameters" type="tns:FlightSearchParameters" minOccurs="0" />
</xs:sequence>
</xs:complexType>

далее ищю FlightSearchParameters

Код:

<xs:complexType name="FlightSearchParameters">
  <xs:complexContent>
    <xs:extension base="tns:BaseParameters">
      <xs:sequence>
        <xs:element name="airlines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airline" type="tns:DictionaryItem" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="route">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="segment" type="tns:RouteSegment" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="adults" type="xs:int" />
        <xs:element name="children" type="xs:int" />
        <xs:element name="infants" type="xs:int" />
        <xs:element name="serviceClass" type="tns:classOfService" minOccurs="0" />
        <xs:element name="directOnly" type="xs:boolean" />
        <xs:element name="mixedVendors" type="xs:boolean" />
        <xs:element name="dateTolerance" type="xs:int" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

смотрю по BaseParameters

Код:

<xs:complexType name="BaseParameters" abstract="true">
<xs:sequence>
<xs:element name="authContext" type="tns:AuthContext" />
</xs:sequence>
</xs:complexType>

и AuthContext

Код:

<xs:complexType name="AuthContext">
<xs:sequence>
<xs:element name="locale" type="xs:string" />
<xs:element name="agent" type="xs:string" />
<xs:element name="password" type="xs:string" />
<xs:element name="salesPoint" type="xs:string" />
<xs:element name="customer" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>

вот не совсем понятно, следующее: понятно как передаются параметры adults, children... но ведь они вложены во внешний узел <xs:extension base="tns:BaseParameters"> , в котором как параметр указан BaseParameters. но он же тоже передается как дерево узлов, через AuthContext

пытаюсь это структурировать, но что то даже не очень хорошо понимаю как это будет выглядеть

alatar 23.03.2011 20:13

complexType в контексте as3 это объекты, element – свойства объекта, name у элемента – имя свойства, extension (судя по-всему) указывает на то, что FlightSearchParameters наследуется от BaseParameters.

Haiat 23.03.2011 20:14

а sequence?

alatar 23.03.2011 20:17

Перечисление свойств.

Haiat 23.03.2011 20:38

то есть мне нужно описывать через объекты? или реально чисто XML дать запрос

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

alatar 23.03.2011 22:44

Цитата:

или реально чисто XML дать запрос
SOAP это, по-сути, xml
Цитата:

то что значит наследование в данном случае
Ребенок наследует свойства родителя.

Haiat 23.03.2011 23:15

если <xs:sequence> - перечисление свойств, то получается как то так

Код:

<parametres airlines='**' route='**' adults='**' ... />
Код:

<xs:complexType name="FlightSearchParameters">
  <xs:complexContent>
    <xs:extension base="tns:BaseParameters">
      <xs:sequence>
        <xs:element name="airlines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airline" type="tns:DictionaryItem" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="route">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="segment" type="tns:RouteSegment" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="adults" type="xs:int" />
        <xs:element name="children" type="xs:int" />
        <xs:element name="infants" type="xs:int" />
        <xs:element name="serviceClass" type="tns:classOfService" minOccurs="0" />
        <xs:element name="directOnly" type="xs:boolean" />
        <xs:element name="mixedVendors" type="xs:boolean" />
        <xs:element name="dateTolerance" type="xs:int" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

а куда тогда вставляются свойства от BaseParameters?

или я не совсем правильно понимаю. и почему то сомнительно что airlines это такое свойство

если element Это свойство, то как у него еще element есть?
не может ли быть sequence это рядов вложенных объектов?

alatar 24.03.2011 00:23

Цитата:

то получается как то так
не совсем
Код:

<parametres>
    <airlines>
        <airline>**</airline>
        ...
    </airlines>
    <route>**</route>
    ...
</parametres>


Haiat 24.03.2011 00:31

а в атрибуты к parametres идут свойства agent password? или как то по другому они?

Спасибо

wvxvw 24.03.2011 00:48

Что бы я вам советовал сделать:
Выберите сначала все типы объектов (более того, если уж сервисы на Яве - может вам дадут Ява код посмотреть, может понятнее будет). После чего Создайте AS3 классы с такими же именами и свойствами. После чего, отнаследуйте их всех от какого-нибудь DAO-like (Data Access Object) класса с методом toXML() который будет обобщенно конвертировать класс (его публичные свойства) в XML. Соответственно, если свойство / элемент коллекции в свойстве является наследником DAO - то при такой вот "сериализации" вызвать у него тоже toXML(). Это примерно то же самое, что делает фреймворк, когда подгатавливает ответ сервиса. Но если вы это сами сделаете руками один раз - быстрее поймете, что от вас требуется.
Кса sequence - это скорее вектор все-таки, если так к этому подходить.

alatar 24.03.2011 00:55

Цитата:

а в атрибуты к parametres идут свойства agent password? или как то по другому они?
атрибуты вообще не используются.

Haiat 24.03.2011 13:05

а куда вставляются тут данные для авторизации?

alatar 24.03.2011 13:12

Код:

<parametres>
    <authContext>
            <agent>**</agent>
                <locale>**</locale>
                ...
        </authContext>
    <airlines>
        <airline>**</airline>
        ...
    </airlines>
    <route>**</route>
    ...
</parametres>


Haiat 28.03.2011 16:46

делаю следующий запрос:
Код AS3:

var operation:AbstractOperation  = webService.getOperation("searchFlights");
                                var arguments:XML =
 
 
                                <parametres>
  <authContext>
      <agent>skybutik</agent>
      <password>12</password>
      <salesPoint>SKY-BUTIK</salesPoint>
      <locale>en</locale>
  </authContext>
 
  <route>
      <segment>
              <date>2011-03-28</date>
                  <locationBegin><name>Москва</name></locationBegin>
                  <locationEnd><name>Лондон</name></locationEnd>
          </segment>
  </route>
  <adults>2</adults>
  <children>2</children>
  <infants>2</infants>
  <serviceClass>ECONOMY</serviceClass>
  <directOnly>true</directOnly>
  <mixedVendors>false</mixedVendors>
 
 
  </parametres>;

дает следующие ошибки

Код:

(mx.messaging.messages::ErrorMessage)#0
  body = "<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope"><faultcode>ns2:Client</faultcode><faultstring>Cannot find dispatch method for {}parametres</faultstring></ns2:Fault></S:Body></S:Envelope>"
  clientId = "DirectHTTPChannel0"
  correlationId = "923D92DA-EC81-3299-AB93-FC454A37CB54"
  destination = ""
  extendedData = (null)
  faultCode = "Server.Error.Request"
  faultDetail = "Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Ошибка потока. URL: http://alliance.gridnine.com:9090/alliance/ws"]. URL: http://alliance.gridnine.com:9090/alliance/ws"
  faultString = "HTTP request error"
  headers = (Object)#1
    DSStatusCode = 500
  messageId = "41C45829-0273-6AFA-2926-FC454A859351"
  rootCause = (flash.events::IOErrorEvent)#2
    bubbles = false
    cancelable = false
    currentTarget = (flash.net::URLLoader)#3
      bytesLoaded = 365
      bytesTotal = 0
      data = "<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope"><faultcode>ns2:Client</faultcode><faultstring>Cannot find dispatch method for {}parametres</faultstring></ns2:Fault></S:Body></S:Envelope>"
      dataFormat = "text"
    errorID = 0
    eventPhase = 2
    target = (flash.net::URLLoader)#3
    text = "Error #2032: Ошибка потока. URL: http://alliance.gridnine.com:9090/alliance/ws"
    type = "ioError"
  timestamp = 0

мне говорят что мой не запрос не соответствует стандарту SOAP. и из этой ошибки (это же как бы ответ сервер) я понимаю что нужно добавить в начало
Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body>
и в конец соответсвенно </S:Body></S:Envelope>

выдает почти такую же ошибку

Код:

ERROR!!!!!!! (mx.messaging.messages::ErrorMessage)#0
  body = "<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope"><faultcode>ns2:Client</faultcode><faultstring>Cannot find dispatch method for {http://schemas.xmlsoap.org/soap/envelope/}Envelope</faultstring></ns2:Fault></S:Body></S:Envelope>"
  clientId = "DirectHTTPChannel0"
  correlationId = "E2844987-E7E1-A161-B56A-FC47EB1F2902"
  destination = ""
  extendedData = (null)
  faultCode = "Server.Error.Request"
  faultDetail = "Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Ошибка потока. URL: http://alliance.gridnine.com:9090/alliance/ws"]. URL: http://alliance.gridnine.com:9090/alliance/ws"
  faultString = "HTTP request error"
  headers = (Object)#1
    DSStatusCode = 500
  messageId = "2C4B56BB-72F9-1AC6-7685-FC47EB63BAA8"
  rootCause = (flash.events::IOErrorEvent)#2
    bubbles = false
    cancelable = false
    currentTarget = (flash.net::URLLoader)#3
      bytesLoaded = 404
      bytesTotal = 0
      data = "<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope"><faultcode>ns2:Client</faultcode><faultstring>Cannot find dispatch method for {http://schemas.xmlsoap.org/soap/envelope/}Envelope</faultstring></ns2:Fault></S:Body></S:Envelope>"
      dataFormat = "text"
    errorID = 0
    eventPhase = 2
    target = (flash.net::URLLoader)#3
    text = "Error #2032: Ошибка потока. URL: http://alliance.gridnine.com:9090/alliance/ws"
    type = "ioError"
  timestamp = 0
  timeToLive = 0

что значит Cannot find dispatch method for {http://schemas.xmlsoap.org/soap/envelope/} ?

правильно ли я оформляю запрос через SOAP - и нужно ли передавать тег <?xml....?>, если да то как правильно его вписать? flex на синтаксис ругается

Спасибо) думаю буквально это последние вопросы, и я разберусь с этим

alatar 28.03.2011 16:58

Цитата:

мне говорят что мой не запрос не соответствует стандарту SOAP. и из этой ошибки (это же как бы ответ сервер) я понимаю что нужно добавить в начало
Вам говорят, что не получилось соедениться с сервером.
Цитата:

text = "Error #2032: Ошибка потока. URL: http://alliance.gridnine.com:9090/alliance/ws"
Цитата:

и нужно ли передавать тег <?xml....?>
Не нужно.

Haiat 28.03.2011 17:02

я имел ввиду, что программисты со стороны клиента говорят что не по стандарту SOAP. ))

а то что не может соедениться с сервером я понимаю. вот в чем только дело? раз он возвращает что то значит соеденяется же, но неправильно (что то не так с запросом наверно). вот я и хочу понять в чем дело.

а что значит Cannot find dispatch method for {http://schemas.xmlsoap.org/soap/envelope/} ?

ведь по ссылке нормально проходит, как я понял всегда это добавляют, это же схема. почему он её как метод интересно воспринимает

alatar 28.03.2011 18:18

Цитата:

а то что не может соедениться с сервером я понимаю. вот в чем только дело? раз он возвращает что то значит соеденяется же, но неправильно (что то не так с запросом наверно). вот я и хочу понять в чем дело.
Еще раз и медленно. Плеер не смог соедениться с сервером и вернул стандартную ошибку. До синтаксиса дело вообще не дошло.

wvxvw 28.03.2011 22:21

Не, не совсем... достучатся вы до сервера достучались, но сервер вернул статус 500 - это значит "внутренняя ошибка сервера". Как правило виноват сервер в таком случае, в любом случае в продакшне такого быть не должно. Ну а во время тестов это значит что вы как-то не так обратились, сервер такого ожидал.

Как проще всего проверить. Попросите у разработчиков серверной части образец запроса, как они думают, что он должен приходить. Поставьте какой-нибудь firebug / httpfox / wireshark или любой другой анализатор траффика (сниффер), и посмотрите, что вы отправляете. Сравните с образцом. Так сразу будет понятно, что вы делаете не так.

Haiat 29.03.2011 13:13

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


Запрос я свой выше писал, а встал вопрос - как сделать запрос полностью на XML, то есть как и метод передать с помощью XML?

alatar 29.03.2011 14:20

Цитата:

Запрос я свой выше писал, а встал вопрос - как сделать запрос полностью на XML, то есть как и метод передать с помощью XML?
У тебя правильный зарос. Просто исправь parametres на parameters.


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

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