Flashhilfe.de - Flash Community

[FLEX 3] HTTPService Authentifizierung [Flash 9]

 


AntwortenRegistrieren Seite1  

springer#1
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

14.06.2008, 12:34

hallo zusammen

ich habe eine applikation die einen HTTPService benutzt.
Die Applikation ist fertig und läuft auf MAC einwandfrei.... nur leider unter windows geht gar nichts....

hier der relevante code:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="getXML()">
   <mx:Script>
      <![CDATA[
         import mx.rpc.http.HTTPService;
         import mx.rpc.events.FaultEvent;
         import mx.rpc.events.ResultEvent;
      
         private var __req:HTTPService;
         
         public function getXML():void
         {
            __req = new HTTPService();
            __req.url = "http://meineURL.de/get_xml.php";
            __req.requestTimeout = 15;
            __req.resultFormat = "e4x";
            __req.addEventListener(ResultEvent.RESULT,xmlLoaded);
            __req.addEventListener(FaultEvent.FAULT,xmlFailed);
            __req.send();      
         }
         
         private function xmlLoaded(evt:ResultEvent):void
         {
            this.testfeld.text = __req.lastResult.toString();   
         }
         
         private function xmlFailed(evt:FaultEvent):void
         {
            this.testfeld.text = evt.toString();
         }
      ]]>
   </mx:Script>
   <mx:TextArea x="0" y="0" width="100%" height="100%" id="testfeld"/>
</mx:WindowedApplication>


auf dem serverlog sind nur die zugriffe von meinem mac aus sichtbar, keine zugriffe vom PC. also scheint der service gar nicht zuzugreifen....

hab im netz nicht viel gefunden. ausser man solle noch contentType definieren. bringt aber auch nichts....

hab auch schon mx.rpc.http.mxml.HTTPService versucht, dasselbe problem...

jemand eine idee?
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 14.06.08 um 14:11 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


Sebastian#2
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

14.06.2008, 14:10

Habe das ganze mal mit <mx:Application und da hat es ganz wunderbar funktioniert.
WindowedApplication ist AIR?

Kann es sein das die Flash Sandbox die Zugriffsrechte verbietet? Testest Du das mit localhost oder einer externen Adresse?
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
springer#3
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

14.06.2008, 14:47

yep WindowedApplication ist AIR...

wenns an der sandbox liegen würde, dürfte es auf dem mac auch nicht funktionieren...

hmm.....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
springer#4
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

14.06.2008, 16:05

ich hab mittlerweile den fehler lokalisiert:

die url ist noch passwortgeschützt, das hatte ich verschwiegen ;-P

ActionScript:
1__req.url = "http://username:passwort@www.url.de/blabla/test.php";


funktioniert so unter mac, nicht aber unter windows...

hab jetzt versucht mit
ActionScript:
1
2
3
__req.setCredentials(...,...);
__req.setRemoteCredentials(...,...);
__req.useProxy = true/false;


das ding unter windows zum laufen zu bringen, jedoch vergeblich.....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Werbung
Beiträge: 0
Registriert: Feb 2016


Sebastian#5
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

17.06.2008, 01:26

>> wenns an der sandbox liegen würde, dürfte es auf dem mac auch nicht funktionieren...
Wenn Du mit dem Mac entwickelst, macht es einen Unterschied.

Flex fügt selbständig einen Eintrag für das Verzeichnis in dem Du entwickelst, in die Sicherheitsbestimmungen hinzu, damit der Datenaustausch funktioniert. Auf Windows bzw. bei Clients, muss man das manuel machen.

Grundsätzlich sollte: username:passwort@domain auch unter win funktionieren. Vielleicht gibts aber an dieser Stelle Probleme mit Flash.

Teste das Script doch am besten erst mal unter Win ohne Passwortschutz. Dann kann man zumindest das schon mal ausgrenzen.

Die Sicherheitseinstellungen für das entsprechende Verzeichnis, kannst Du hier einstellen:
http://www.macromedia.com/support/documentation/de/flashplayer/help/settings_manager04.html
Wahrscheinlich wird Dir das allerdings nicht weiterhelfen, da AIR doch bestimmt ein anderes Sicherheitsmodell hat? - habe noch nichts mit AIR gemacht und rate deswegen einfach mal ins blaue ;)
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
Geändert von Sebastian am 17.06.08 um 12:10 Uhr
springer#6
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

17.06.2008, 12:15

hallo sebastian,

danke für die antwort.

ich habe nun alle requests umgebaut, und alle urls ohne username:passwort (ist eh nicht so schön..)

nun ist es halt einfach so, dass wenn die app zum ersten mal gestartet wird muss man sich manuell auf dem webserver einloggen (mac + pc). dann erhalte ich alle request.
unter mac funktioniert das einwandfrei, wenn man das passwort dem schlüsselbund hinzufügt, und man muss sich auf dem webserver künfitg nicht mehr einloggen.
unter windows funktioniert eigentlich auch alles, nur dass bei jedem start der app  die loginbox für den webserver erneut erscheint. passwort steht da, username steht da, haken aktiv bei kennwort speichern, nur nicht automatisch. man muss da halt nocheinmal ok drücken.

vielleicht gibts ja bei windows noch eine einstellung??

die sicherheitseinstellungen für den flashplayer haben nicht den gewünschten erfolgt erzielt, da AIR offenbar das sandbox feature gar nicht unterstützt. es ist in AIR auch nicht möglich mit

ActionScript:
1
2
Security.allowDomain();
Security.allowInsecureDomain();


irgendwelchen domains zugriffe zu erlauben...

nun ja, es läuft mit der "inkaufnehmbaren" loginbox unter windows.....

ah ja, und fileupload mit FileReference über eine passwortgeschützte url funktioniert nicht (warum auch immer) laut den livedocs..... das finde ich doch etwas unpassend....

grüsse
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 17.06.08 um 12:17 Uhr
Sebastian#7
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

17.06.2008, 13:10

Hab da noch was auf flexforum.de gefunden.

Ein User (asrael) hatte die gute Idee den Header mit der Authentifizierung zu erweitern. Das Beispiel ging zwar nicht, aber so gehts:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="getXML()">
<mx:Script>
<![CDATA[
   import mx.utils.Base64Encoder;
   import mx.rpc.http.HTTPService;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;

   private var __req:HTTPService;
   
   public function getXML():void
   {
      var username:String = 'username';
      var password:String = 'geheim';

        var base64:Base64Encoder = new Base64Encoder()
        base64.encode(username + ":" + password);
        var auth:String = "Basic " + base64.toString(); 

       __req = new HTTPService();
       __req.headers = {Authorization:auth};
       __req.url = "http://meineURL.de/get_xml.php";;
       __req.requestTimeout = 15;
       __req.resultFormat = "e4x";
       __req.addEventListener(ResultEvent.RESULT,xmlLoaded);
       __req.addEventListener(FaultEvent.FAULT,xmlFailed);
       __req.send();     
   }
   
   private function xmlLoaded(evt:ResultEvent):void
   {
      this.testfeld.text = __req.lastResult.toString(); 
   }
   
   private function xmlFailed(evt:FaultEvent):void
   {
      this.testfeld.text = evt.toString();
   }
]]>
</mx:Script>
<mx:TextArea x="0" y="0" width="100%" height="100%" id="testfeld"/>
</mx:WindowedApplication>

Jetzt hab ich wegen Dir meine erste Air Applikation kompiliert! ;o)
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
Geändert von Sebastian am 17.06.08 um 13:17 Uhr
springer#8
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

17.06.2008, 13:40

hallo sebastian

danke für deine bemühungen.
das funktioniert tatsächlich auf mac und pc... :-)) freude herrscht!

und wie fühlt es sich an, AIR compiliert zu haben? hat nicht geschmerzt oder :-)))
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Sebastian#9
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

17.06.2008, 13:53

Naja, so ganz habe ich den Schock noch nicht verarbeitet. Bin aber auf dem Weg der Besserung. ;)
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de