2017-02-22 50 views
0

我正在使用http.getFile()來下載文件。這是代碼。Nativescript - http.getFile()不處理錯誤情況

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

如果我指定的URL無效(即導致在HTTP 404) - 的GetFile()返回成功結果和所述文件包含404 HTML消息。我本以爲404(文件未找到)會導致拒絕。

回答

1

HTTP狀態 ES表明你有一個成功要求而作出 - 而該服務器已迴應不存在的內容。您可能需要實施邏輯來解決不同的服務器狀態,例如40x和50x這些常見的情況,並且不是由錯誤引起的。在HTTP請求中,但由服務器端的錯誤(缺少內容,服務器下降等)。

在您的拒絕回退中,您應該只處理不成功的請求,從而導致與您的代碼執行相關的錯誤,並且不應該基於成功返回的HTTP狀態代碼來處理邏輯。這些情況下,當您發現錯誤時,僅僅因爲請求失敗而不會提供任何狀態代碼。

要根據您可以使用下面的狀態代碼處理邏輯:

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

我理解你的觀點對http.request()。我是一個http get-file請求。要吃掉錯誤狀態/消息(由任何引起的),然後返回一個不帶有其他狀態消息/標誌的錯誤文件 - 我非常確定這不是一種最佳方式。使用你的http.request()例子 - 這就像沒有可用的statusCode。怎麼辦?無論如何 - 總是 - 我感謝你的幫助。 – dashman