Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. Функция ВыполнитьHTTPЗапрос(ПолныйАдресРесурса,ИмяФайлаОтвета,ОписаниеОшибки="")
  2.  
  3. СтруктураURI = СтруктураURI(ПолныйАдресРесурса);
  4. HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,СтруктураURI.Логин,СтруктураURI.Пароль);
  5.  
  6. HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
  7. ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
  8.  
  9. Попытка
  10. Результат = HTTPСоединение.Получить(HTTPЗапрос,ИмяФайлаОтвета);
  11. Исключение
  12. // исключение здесь говорит о том, что запрос не дошел до HTTP-Сервера
  13. //Сообщить("Произошла сетевая ошибка!");
  14. //ВызватьИсключение;
  15. ОписаниеОшибки = "Произошла сетевая ошибка!";
  16. Возврат Ложь;
  17. КонецПопытки;
  18.  
  19. // Анализируем фатальные ошибки
  20. // В большинстве случаев нужно остановить работу и показать пользователю сообщение об ошибке,
  21. // включив в него HTTP-статус
  22.  
  23. // Ошибки 4XX говорят о неправильном запросе - в широком смысле
  24. // Может быть неправильный адрес, ошибка аутентификации, плохой формат запроса
  25. // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4
  26. Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500 Тогда
  27. //Сообщить("Код статуса больше 4XX, ошибка запроса. Код статуса: " + Результат.КодСостояния);
  28. ОписаниеОшибки = "Код статуса больше 4XX, ошибка запроса. Код статуса: " + Результат.КодСостояния;
  29. Возврат Ложь;
  30. КонецЕсли;
  31.  
  32. // Ошибки 5XX говорят о проблемах на сервере (возможно, прокси-сервер)
  33. // Это может быть программная ошибка, нехватка памяти, ошибка конфигурации и т.д.
  34. // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5
  35. Если Результат.КодСостояния >= 500 и Результат.КодСостояния < 600 Тогда
  36. //Сообщить("Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния);
  37. ОписаниеОшибки = "Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния;
  38. Возврат Ложь;
  39. КонецЕсли;
  40.  
  41. // Обрабатываем перенаправление
  42. Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400 Тогда
  43. //Сообщить("Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния);
  44. ОписаниеОшибки = "Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния;
  45. Если Результат.КодСостояния = 302 Тогда
  46. //Сообщить("Код статуса 302, Постоянное перенаправление.");
  47. ОписаниеОшибки = "Код статуса 302, Постоянное перенаправление.";
  48. АдресРесурса = Результат.Заголовки.Получить("Location");
  49. Если АдресРесурса <> Неопределено Тогда
  50. //Сообщить("Выполняю запрос по новому адресу " + АдресРесурса);
  51. ВыполнитьHTTPЗапрос(АдресРесурса,ИмяФайлаОтвета,ОписаниеОшибки);
  52. Иначе
  53. //Сообщить("Сервер не сообщил адрес ресурса!");
  54. Возврат Ложь;
  55. КонецЕсли;
  56. КонецЕсли;
  57. КонецЕсли;
  58. // Статусы 1XX и 2XX считаем хорошими
  59. Если Результат.КодСостояния < 300 Тогда
  60. //Сообщить("Скорее всего все хорошо");
  61. //Сообщить("Код статуса: " + Результат.КодСостояния);
  62. Возврат Истина;
  63. КонецЕсли;
  64.  
  65. КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement