2016-08-19 1 views
0

Ich arbeite seit einem Jahr an einem Android-App-Projekt und habe dieses Feature von Anfang an implementiert. Die App ist eine Ausgaben-/Sparverwaltungs-App und verfügt über eine Funktion, die die Währungen im Hintergrund konvertiert, wenn sich der Benutzer derzeit in einem anderen Land befindet. Ich verwende Geonames-API, um den Namen des Landes herauszufinden. Hier ist der relevante Code:Warum erhalte ich plötzlich Stream-Fehler während der Verwendung von URLLoader?

countryURLRequest = new URLRequest('http://api.geonames.org/findNearby?lat='+latitudes+'&lng='+longitudes+'&username=fatninja'); 
countryURLLoader = new URLLoader(); 

countryURLLoader.load(countryURLRequest); 

Wenn ich heute lat und lng Werte aus dem Simulator schickte ich an dieser Linie, die den Strom Fehler bekam:

countryURLLoader = new URLLoader(); 

Was seltsam ist, dass diese Funktion hat Von Anfang an in Ordnung. Ich dachte, es könnte ein Fehler im Code gewesen sein, also habe ich das Projekt vom Backup (vor 3 Monaten) ausgeführt, es gibt denselben Fehler. Ich weiß, dass es vor 3 Monaten funktionierte. Was könnte das Problem sein?

+1

Was ist die vollständige Fehlermeldung, die Sie sehen? Tritt es während der Kompilierung oder zur Laufzeit auf? –

+0

Fehler # 2044: Unhandled ioError :. text = Fehler # 2032: Stromfehler. URL: http://api.geonames.org/findNearby?lat=12.21354&lng=6.432163&username=fatninja \t bei TodayPopup/onGeoUpdated() [F: \ (Adresse entfernt) \ TodayPopup.as: 164] –

Antwort

1

Dieser Fehler weist darauf hin, dass beim Abrufen der Daten ein Problem auftritt. Mit deinem Code ist nichts falsch. Möglicherweise hat sich Ihre Netzwerkkonfiguration geändert, wodurch der Zugriff auf den Webdienst verhindert wird.

Dies wird zusätzlich durch die Tatsache unterstützt, dass Sie das gleiche Problem mit Ihrem zuvor funktionierenden Code haben.

Es gibt zwei Dinge, die Sie tun sollten.

  1. Fügen Sie einen IO-Fehlerereignishandler und einen HTTP-Statusereignishandler hinzu.

    var loader: URLLoader = neuer URLLoader; loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loader_ioErrorHandler); // Beachten Sie, dass der Listener zum contentLoaderInfo-Objekt hinzugefügt wird loader.addEventListener (HTTPStatusEvent.HTTP_STATUS, loader_httpStatusHandler); loader.load (neuer URLRequest ("www.example.com"));

    Funktion loader_ioErrorHandler (e: IOErrorEvent): void { // Behandeln Sie die Fehler trace (e.text); }

    Funktion loader_httpStatusHandler (e: HTTPStatusEvent.HTTP_STATUS): void { trace (e.status); }

Etiketten Fügen Sie den Benutzer über den Fehler im IO-Fehler-Handler zu benachrichtigen, und vielleicht eine Taste, um den Vorgang zu wiederholen.

  1. Erhöhen Sie die Dauer des Zeitlimits mithilfe der Eigenschaft requestTimeout der HTTPService-Instanz.
+0

Hallo. . Danke für die Antwort. Als ich die AIR SDK-Version von 22.0 auf 20.0 änderte, funktionierte es genauso wie zuvor. Könnte es ein Fehler im SDK sein? –

+1

Ich sehe einen alten Fehlerbericht über ein ähnliches Problem. Aber das wurde in AIR SDK 2.5 behoben.Ich glaube nicht, dass sie eine Regression bis zum Ende haben würden. Haben Sie die Vorschläge von Dominic unter http://stackoverflow.com/a/9986938/229367 überprüft? Es kann vorkommen, dass das neuere SDK über andere Standardberechtigungen verfügt oder die Art und Weise geändert hat, wie Berechtigungen deklariert werden. –

+0

Danke aot .. ich werde es überprüfen .. –

Verwandte Themen