2017-02-22 17 views
0

Я использую http.getFile() для загрузки файла. Вот код.Nativescript - http.getFile() не обрабатывает ошибки

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

Если я укажу неверный URL (т.е. в результате чего 404) - GetFile() возвращает результат успеха и файл содержит сообщение 404 HTML. Я бы подумал, что 404 (файл не найден) приведет к отказу.

ответ

1

HTTP Status 404 эс признак того, что вы имели запрос успешно сделал - и что сервер ответил с несуществующим содержанием. Возможно, вы захотите реализовать логику для разрешения различных статусов серверов, таких как 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(). Mine был запросом HTTP-файла. Чтобы съесть статус/сообщение об ошибке (вызвано каким-либо), а затем вернуть неверный файл без каких-либо других сообщений/флагов статуса - я уверен, что это не оптимальный способ. Используя ваш пример http.request() - это похоже на отсутствие доступного статуса. Что теперь? В любом случае - ВСЕГДА - я ценю вашу помощь. – dashman