Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Функция ВыполнитьHTTPЗапрос(ПолныйАдресРесурса,ИмяФайлаОтвета,ОписаниеОшибки="")
- СтруктураURI = СтруктураURI(ПолныйАдресРесурса);
- HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,СтруктураURI.Логин,СтруктураURI.Пароль);
- HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
- ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
- Попытка
- Результат = HTTPСоединение.Получить(HTTPЗапрос,ИмяФайлаОтвета);
- Исключение
- // исключение здесь говорит о том, что запрос не дошел до HTTP-Сервера
- //Сообщить("Произошла сетевая ошибка!");
- //ВызватьИсключение;
- ОписаниеОшибки = "Произошла сетевая ошибка!";
- Возврат Ложь;
- КонецПопытки;
- // Анализируем фатальные ошибки
- // В большинстве случаев нужно остановить работу и показать пользователю сообщение об ошибке,
- // включив в него HTTP-статус
- // Ошибки 4XX говорят о неправильном запросе - в широком смысле
- // Может быть неправильный адрес, ошибка аутентификации, плохой формат запроса
- // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4
- Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500 Тогда
- //Сообщить("Код статуса больше 4XX, ошибка запроса. Код статуса: " + Результат.КодСостояния);
- ОписаниеОшибки = "Код статуса больше 4XX, ошибка запроса. Код статуса: " + Результат.КодСостояния;
- Возврат Ложь;
- КонецЕсли;
- // Ошибки 5XX говорят о проблемах на сервере (возможно, прокси-сервер)
- // Это может быть программная ошибка, нехватка памяти, ошибка конфигурации и т.д.
- // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5
- Если Результат.КодСостояния >= 500 и Результат.КодСостояния < 600 Тогда
- //Сообщить("Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния);
- ОписаниеОшибки = "Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния;
- Возврат Ложь;
- КонецЕсли;
- // Обрабатываем перенаправление
- Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400 Тогда
- //Сообщить("Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния);
- ОписаниеОшибки = "Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния;
- Если Результат.КодСостояния = 302 Тогда
- //Сообщить("Код статуса 302, Постоянное перенаправление.");
- ОписаниеОшибки = "Код статуса 302, Постоянное перенаправление.";
- АдресРесурса = Результат.Заголовки.Получить("Location");
- Если АдресРесурса <> Неопределено Тогда
- //Сообщить("Выполняю запрос по новому адресу " + АдресРесурса);
- ВыполнитьHTTPЗапрос(АдресРесурса,ИмяФайлаОтвета,ОписаниеОшибки);
- Иначе
- //Сообщить("Сервер не сообщил адрес ресурса!");
- Возврат Ложь;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- // Статусы 1XX и 2XX считаем хорошими
- Если Результат.КодСостояния < 300 Тогда
- //Сообщить("Скорее всего все хорошо");
- //Сообщить("Код статуса: " + Результат.КодСостояния);
- Возврат Истина;
- КонецЕсли;
- КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement