Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   WebService и basic authentication (http://www.flasher.ru/forum/showthread.php?t=116075)

Mamoulian 19.09.2008 14:07

WebService и basic authentication
 
Здравствуйте.
Во flex и flesh начинающий, помогите разобраться.
Хочу получать данные от самописного вебсервиса, вебсервис элементарный - две функции, одна возвращает строку, другая число. Написан на java с axis2.
Работает, проверено. Работает через .NET и через Flex.
Но сервис необходимо закрыть от постаронних. Включаю на axis2 basic authentication - сервис работает и доступен из приложения на .NET, а вот из flex'а получить доступ не выходит - выводится ошибка.
Может быть поделитесь примером, как это делается правильно?
У меня так:
Код:

package
{
        import mx.controls.Alert;
        import mx.rpc.events.*;
        import mx.rpc.soap.LoadEvent;
        import mx.rpc.soap.mxml.WebService;
        import flash.system.*;
       
        public final class MainApp
        {
                private var ws:WebService;
                private var url:String = "http://pma:8080/axis2/services/HelloService?wsdl";
                private var user:String = "webservice";
                private var password:String = "webservice";
               
                public function MainApp()
                {
                        trace(PlayerVersion());
                        Service();
                }
               
                private function PlayerVersion(): String
                {
                        var v:String = "Player version: ";
                        v = v + Capabilities.version;
                        if (Capabilities.isDebugger)
                                v = v + " debugger";

                        return v;
                }
               
                private function Service(): void
                {
                        try {
                                ws = new WebService();
                                ws.useProxy = true;
                                ws.wsdl = url;
                                ws.setCredentials(user, password); // это надо?
                                ws.setRemoteCredentials(user, password); // А это, какая строка нужна?
                                ws.addEventListener(FaultEvent.FAULT, errorHandler);
                                ws.addEventListener(LoadEvent.LOAD, loadHandler);
                                ws.loadWSDL();
                        }
                        catch(e:Object) {
                                trace("Web service initialization error");
                                if(e.message)
                                        trace(e.message);
                                else
                                        trace("Unknown error");
                        }
                       
                }
               
                private function loadHandler(event:LoadEvent):void
                {       
                        ws.getHelloString.addEventListener(ResultEvent.RESULT, getHelloStringResult);
                        ws.getHelloString.send();
                        ws.getNumber.addEventListener(ResultEvent.RESULT, getNumberResult);
                        ws.getNumber.send();
                }

                private function errorHandler(event:FaultEvent):void
                  {
                    trace("Web Service error:" );
                    if (event.message)
                    {
                              trace(event.message.toString());
                    }
                    else
                    {
                              trace("Unknown error!");
                    }
                    Alert.show("Ошибка запроса к вебсервису", "Ошибка соединения");
                  }
               
                private function getHelloStringResult(e:ResultEvent): void
                {
                        Alert.show(e.result.toString());
                }

                private function getNumberResult(e:ResultEvent): void
                {
                        Alert.show(e.result.toString());
                }
        }
}

Ошибку получаю такую:
Код:

Web Service error:
(mx.messaging.messages::HTTPRequestMessage)#0
  body = (Object)#1
  clientId = (null)
  contentType = "application/x-www-form-urlencoded"
  destination = ""
  headers = (Object)#2
    DSRemoteCredentials = "d2Vic2VydmljZTp3ZWJzZXJ2aWNl"
    DSRemoteCredentialsCharset = (null)
  httpHeaders = (Object)#3
  messageId = "11A297B4-19FE-F942-B249-79AB369CEAAF"
  method = "GET"
  recordHeaders = false
  timestamp = 0
  timeToLive = 0
  url = "http://pma:8080/axis2/services/HelloService?wsdl"



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

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