HTTPЗапрос возвращает ответ 301

1. Rustavelli 17 02.04.19 12:02 Сейчас в теме
Помогите разобраться, кто сталкивался с похожей проблемой
	InvoiceТип = ФабрикаXDTO.Тип("DataTransfer", "Invoice");
	InvoiceDetailТип = ФабрикаXDTO.Тип("DataTransfer", "InvoiceDetail");
	Invoice = ФабрикаXDTO.Создать(InvoiceТип);
	
	Invoice.ID = Заказ.Номер;	
	Invoice.SubjectID = СокрЛП(Заказ.Контрагент.УникальныйИдентификатор());	
	Invoice.InvoiceType =  ?(Заказ.ВидКонтрагента = Перечисления.ВидКонтрагента.Организация, 1, 0);	
	
	Для Каждого Выборка Из Заказ.ТаблицаТоваров Цикл
		InvoiceDetail = ФабрикаXDTO.Создать(InvoiceDetailТип);
		InvoiceDetail.ProductID = СокрЛП(Выборка.Номенклатура.УникальныйИдентификатор());
		InvoiceDetail.Quantity = Выборка.Количество;
		InvoiceDetail.Weight = Выборка.Вес;
		InvoiceDetail.Amount = Выборка.Сумма;
		Invoice.Detailing.Добавить(InvoiceDetail);		
	КонецЦикла;
	
	РезультатXML = Новый ЗаписьXML;
	РезультатXML.УстановитьСтроку("UTF-8");
	ФабрикаXDTO.ЗаписатьXML(РезультатXML, Invoice);
	Результат = РезультатXML.Закрыть();
	
	// устанавливаем соединение с сервером
	
	Если ПустаяСтрока(Сервер) Или ПустаяСтрока(Ресурс) Тогда
		
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось установить соединение с сервером, не указаны параметры соединения с сервером";
		Сообщение.Сообщить();
		
	Иначе
		
		Соединение = Новый HTTPСоединение(Сервер,,,,,,);
		
		HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
		HTTPЗапрос.УстановитьТелоИзСтроки(Результат);
		Результат  = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
		Соединение = Неопределено; 
		
	КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1486 02.04.19 12:06 Сейчас в теме
(1) редирект.
В чем вопрос?
3. Rustavelli 17 02.04.19 12:15 Сейчас в теме
(2) почему возвращает ответ 301
4. Xershi 1486 02.04.19 12:17 Сейчас в теме
(3) потому что так разработчики сайта решили.
5. Rustavelli 17 02.04.19 12:18 Сейчас в теме
(4)
<ht ml>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
6. Rustavelli 17 02.04.19 12:20 Сейчас в теме
(4) прошу прощения, я не совсем вас понял, у них стоит какая то защита на сайте и что то блокирует соединение?
7. Xershi 1486 02.04.19 12:22 Сейчас в теме
(6) возможно, но вероятно вы обратились на устаревший урл, и система вам говорит, что нужно обратиться на другой.
Это стандартное поведение хорошей поддержки.
user1088651; ArsenProg; Rustavelli; +3 Ответить
8. Rustavelli 17 02.04.19 12:24 Сейчас в теме
(7) спасибо за подсказку. через постман данный урл отрабатывает, поэтому грешу на свой код в 1с
9. Xershi 1486 02.04.19 12:36 Сейчас в теме
(8) либо код кривой, либо постман ваш сам редирект обработал.
Rustavelli; +1 Ответить
11. Rustavelli 17 02.04.19 15:56 Сейчас в теме
(9) да, был редирект, по умолчанию подключалось по http и меня перекидывало на https.
12. Xershi 1486 02.04.19 16:07 Сейчас в теме
13. Rustavelli 17 02.04.19 16:09 Сейчас в теме
(12) теперь столкнулся с новой проблемой - Ошибка работы с Интернет: SSL connect error, я так понимаю изза того что база на 8.2.
14. Xershi 1486 02.04.19 16:21 Сейчас в теме
(13) да, она не умеет по безопасному протоколу работать.
Мы ставили 8.3 в режиме совместимости.
Ну или тунель делайте инфы полно как это обойти.
Rustavelli; +1 Ответить
15. Rustavelli 17 02.04.19 16:29 Сейчас в теме
16. user-sergey 47 01.09.19 11:26 Сейчас в теме
(11) Как в итоге победили 301 ошибку? У меня такая же проблема, подскажите куда копать
10. Merc 40 02.04.19 12:49 Сейчас в теме
17. disla 27.12.19 15:47 Сейчас в теме
У меня была подобная проблема.
Админ по моей просьбе опубликовал базу 1С на веб-сервере. Эта самая база через веб-клиент работает нормально, а если ей отправить HTTP-запросы или обратиться через ODATA - ошибка 301, хоть убейся об стену.
Решилось всё довольно просто. Админ опубликовал базу под именем в ВЕРХНЕМ регистре, а я обращался к ней в нижнем. Из-за этого был редирект. Прописал у себя в настройках в верхнем регистре - и всё заработало.
Mizhgan42; BotMan4; user1619761; rmarty; NikeeNik; IvanPoh; pahmutov; user1552405; novotekh; nikolega; user1374747; molethe; a_l_e_xj; Legin; chpetr; LostMicos; Brawler; TheOldGuard; kotlovD; milov.aleksey; user1445144; user1150141; Global__IT; Legavaz; user1066941; Region_64; system-3000; Pashkaa; dkonst8; collider; movled; jcuken; _sergei; user717534; KastoriX; denmon88; Katepompom; lexxmaster; soulu; teyana; aple313; OrdosGreen; Noobmaster69; guevara74; sophie10; +45 Ответить
18. OrdosGreen 23.04.20 14:54 Сейчас в теме
(17) У меня похожая ситуация была. Спасибо что натолкнул на мысль куда копать. Были опубликованы базы, и их копии. И на живой все ок, на копии ни в какую не работало, хотя код взят с живой базы, рабочий. Но у меня отличие в том , что имена базы и сервисов были написаны вообще кэмел стилем, т.е. и верхний регистр, и нижний. Локализацию проблемы осложняло то что через браузер все ок, а через 1с как придется. После того как имена всех баз и урлы переименованы в нижний регистр проблемы с 301-й ошибкой ушли. кстати офф топ, зачастую, возникает ошибка 500-я ошибка, если демонически обновить конфу в базе которая опубликована, причем рандомно, 5 раз постучишься все ок, на 6-й будет косяк, так что обновлять опубликованные базы все таки лучше не динамически.
19. Ditron 185 23.04.20 15:03 Сейчас в теме
если 301 возвращает, обычно в заголовках ответа должен быть новый адрес ресурса в "Location", сделайте отдельную фукнцию с передачей строки ресурса, и если при вызове метода HTTP возвращает 301 ищите новый Location в заголовке, вызывайте саму себя с указанием значения Location...
чтото типа:
Функция ЗагрузитьФайл(url) Экспорт

		СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(url);
		Соединение = Новый HTTPСоединение(СтруктураURI.Хост, , , , , , Новый ЗащищенноеСоединениеOpenSSL());
		Запрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
		Ответ = Соединение.Получить(Запрос);
		Если Ответ.КодСостояния = 302 Тогда // или 301
			НовыйАдрес = Ответ.Заголовки.Получить("Location"); // тут конечно можно добавить проверку на заполненность
			Результат = ЗагрузитьФайл(НовыйАдрес);
		ИначеЕсли Ответ.КодСостояния = 200 Тогда
			Результат = Ответ.ПолучитьТелоКакДвоичныеДанные();
		Иначе
			Результат = Неопределено;
		КонецЕсли;
	
	Возврат Результат;

КонецФункции
Показать

мат часть https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D­0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%­D0%B8%D1%8F_HTTP#301
user1619761; rmarty; Kefis89; Prad2002; testnv0; chilyagin; user1150141; Artnad; Antoska; +9 Ответить
20. OrdosGreen 23.04.20 16:21 Сейчас в теме
(19)
ли 301 возвращает, обычно в заголовках ответа должен быть новый адрес ресурса в "Location", сделайте отдельную фукнцию с передачей строки ресурса, и если при вызове метода HTTP возвращает 301 ищите новый Location в заголовке, вызывайте саму себя с указанием значения Location...
чтото типа:
Так то это да, Я описывал ситуацию с 301-й ошибкой когда одинэс чудит, заголовки в таком случае пустые. еще раз, из 1с стучимся в 1с. Заголовков ответа нет. только код состояния. Если такой косяк, смотреть на регистр символов в запросе, должны совпадать с тем что указано в публикации базы. Про 301-ую ошибку при обращении к внешним ресурсам(не 1с), я не писал. и там да, должно быть так как Вы описываете.
21. Ditron 185 23.04.20 16:31 Сейчас в теме
(20) я писал автору поста, у него ничего не сказано "куда" он запросы шлет...)
22. user698322_dmnk0 12.10.21 10:57 Сейчас в теме
Спасибо за совет. У меня была похожая ситуация. В Url был путь с названием базы в верхнем регистре и похоже поэтому была ошибка 301 в веб сервисах. Как изменил на нижний регистр название базы в url, так все и заработало.
23. dikar40 8 14.12.22 14:22 Сейчас в теме
(18) спасибо за разбор. Очень помогло!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот