2017-02-22 4 views
0

Ich verwende http.getFile(), um eine Datei herunterzuladen. Hier ist der Code.Nativescript - http.getFile() verarbeitet keine Fehlersituationen

httpModule.getFile(url, destPath).then(function(result) {}, function (error) {});

Wenn ich eine ungültige URL angeben (das heißt in einem http resultierenden 404) - getFile() gibt Erfolg Ergebnis und die Datei enthält die 404 HTML-Nachricht. Ich hätte gedacht, dass ein 404 (Datei nicht gefunden) zu einer Zurückweisung führen würde.

Antwort

1

HTTP-Status es Anzeichen dafür, dass Sie eine erfolgreich Anfrage gemacht haben - und dass der Server mit nicht vorhandenen Inhalt reagiert hat. Möglicherweise möchten Sie eine Logik implementieren, um verschiedene Serverstatus wie 40x und 50x zu beheben, die häufige Szenarien sind und nicht durch Fehler verursacht werden. in der HTTP-Anfrage aber durch einen Fehler in der Server-Seite (fehlender Inhalt, gefallener Server, etc.).

In Ihrem Zurückweisungs-Fallback sollten Sie erwarten, dass nur fehlerhafte Anforderungen verarbeitet werden, die zu Fehlern bei der Codeausführung führen, und Sie sollten keine Logik basierend auf dem erfolgreich zurückgegebenen HTTP-Statuscode verarbeiten. Wenn Sie einen Fehler feststellen, erhalten Sie keinen Statuscode, nur weil die Anforderung fehlgeschlagen ist.

Logik auf Statuscode behandeln basiert Sie folgende verwenden:

http.request({ url: "https://httpbin.org/get", method: "GET" }).then(response => { 
     // Argument (response) is HttpResponse! 
     var statusCode = response.statusCode; 
     if (statusCode >== 400) { 
      // do something to handle all statuses greater then 400 
     } 
    }).catch(err => { 
    // handle execution errors here 
}) 
+0

Ich verstehe Ihren Standpunkt auf der http.request(). Meine war eine HTTP-Get-File-Anfrage. Den Fehlerstatus/die Nachricht aufzufressen (verursacht durch was auch immer) und dann eine falsche Datei ohne andere Statusmeldung/Flags zurückgeben - bin mir ziemlich sicher, dass dies kein optimaler Weg ist. Verwenden Sie Ihr http.request() - Beispiel - es ist als wäre kein statusCode verfügbar. Was jetzt? Wie auch immer - wie immer - ich schätze Ihre Hilfe. – dashman

Verwandte Themen