Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.03.2011, 23:31
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 1  
Ответить с цитированием
Haiat
 
Аватар для Haiat

Регистрация: May 2007
Сообщений: 721
По умолчанию Передача параметров 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)

Старый 21.03.2011, 23:53
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 2  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
А так?

Код 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>

Старый 22.03.2011, 00:03
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 3  
Ответить с цитированием
Haiat
 
Аватар для Haiat

Регистрация: May 2007
Сообщений: 721
как я понимаю 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)

Старый 22.03.2011, 12:05
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
а если я вставлю нужные входные данные, черех <mx:request> То срабатывает по fault функция
На этом сервисе getMonths вообще не принимает параметров, тем более ни про какой 'agent' он понятия не имеет.
Код:
<wsdl:message name="getMonthsRequest"></wsdl:message>

Старый 22.03.2011, 13:21
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 5  
Ответить с цитированием
Haiat
 
Аватар для Haiat

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

спасибо


Последний раз редактировалось Haiat; 22.03.2011 в 13:30.
Старый 22.03.2011, 13:48
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
не совсем понимаю как их передавать, пробовал по разному
В arguments операции передается объект с параметрами. Либо при вызове send(). Либо в request, но тогда надо приводить операцию к Operation, т.к. getOperation возвращает AbstractOperation. Ожидаемые параметры описываются в wsdl в тегах message.

Старый 22.03.2011, 14:06
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 7  
Ответить с цитированием
Haiat
 
Аватар для Haiat

Регистрация: May 2007
Сообщений: 721
вот у меня такой скрипт:
Код 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, но мне говорят что их нужно передавать для авторизации

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


Последний раз редактировалось Haiat; 22.03.2011 в 14:08.
Старый 22.03.2011, 14:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
У меня не выдает этот wsdl, выложите все, что в message для searchSchedule

Старый 22.03.2011, 14:13
Haiat вне форума Посмотреть профиль Отправить личное сообщение для Haiat Найти все сообщения от Haiat
  № 9  
Ответить с цитированием
Haiat
 
Аватар для Haiat

Регистрация: May 2007
Сообщений: 721
посмотрите исходный код, открывшейся страницы.

там есть это
Код:
<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>

Старый 22.03.2011, 14:35
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ну он принимает некие parameters, странно, что тип не указан.
Обычно описывается в виде complexType или simpleType.
Скорее всего, что-то типа:
Код AS3:
var arguments:Object = {parameters: {agent: bond, password: james}};

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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