Ответ.ПолучитьТелоКакСтроку() Пустая строка

1. user1292093 25.12.19 11:55 Сейчас в теме
Сначала в ответ записывалось "Калькуляция", так как должно быть и передавалось, но когда Ответ.ПолучитьТелоКакСтроку () выдавало пустую строку. Перезапустил Apache, обновил публикацию, теперь такая ошибка. Это обмен. Я должен получить то, что не записалось , в моем случае это "Калькуляция".
	Если ЗначениеЗаполнено(Изделие) И ЗначениеЗаполнено(Поставки) И ЗначениеЗаполнено(Калькуляция) Тогда  									
		ЧтениеJSON.Закрыть(); 
		Возврат Ответ;
	Иначе 
		ЧтениеJSON.Закрыть();
		Ответ.УстановитьТелоИзСтроки(?(ЗначениеЗаполнено(Изделие),"", "Изделие") + ?(ЗначениеЗаполнено(Поставки),"", "Поставки") + ?(ЗначениеЗаполнено(Калькуляция),"", "Калькуляция")); 
		Ответ.КодСостояния = 304;
		Возврат Ответ;
	КонецЕсли;
Показать
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
32. uno-c 235 27.12.19 01:24 Сейчас в теме +0.31 $m
Пустое тело на 304 код состояния - так и должно быть по документации Hypertext Transfer Protocol (HTTP/1.1)

https://tools.ietf.org/html/rfc7232#section-4.1
A 304 response cannot contain a message-body; it is always terminated
by the first empty line after the header fields.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1292093 25.12.19 11:56 Сейчас в теме
от
Прикрепленные файлы:
3. Sashares 34 25.12.19 12:09 Сейчас в теме
(2)Пока не противоречит коду. У вас ответ заполняется только если заполнена хотя бы одна переменная из 3х.
Хоть одна заполнена?
5. user1292093 25.12.19 12:09 Сейчас в теме
6. user1292093 25.12.19 12:10 Сейчас в теме
(3)все две, "Калькуляция" нет
7. Sashares 34 25.12.19 12:11 Сейчас в теме
(6)
Сделайте так:
СтрокаДляОтвета = ?(ЗначениеЗаполнено(Изделие),"", "Изделие") + ?(ЗначениеЗаполнено(Поставки),"", "Поставки") + ?(ЗначениеЗаполнено(Калькуляция),"", "Калькуляция");
Сообщить(СтрокаДляОтвета);
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета ); 


Что будет в СтрокаДляОтвета?
9. user1292093 25.12.19 12:14 Сейчас в теме
(7)
СтрокаДляОтвета = ?(ЗначениеЗаполнено(Изделие),"", "Изделие") + ?(ЗначениеЗаполнено(Поставки),"", "Поставки") + ?(ЗначениеЗаполнено(Калькуляция),"", "Калькуляция");
Сообщить(СтрокаДляОтвета);
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета );
Прикрепленные файлы:
10. Sashares 34 25.12.19 12:17 Сейчас в теме
(9)А в fiddler что видно? Что реально передается?
11. user1292093 25.12.19 12:18 Сейчас в теме
14. Sashares 34 25.12.19 12:19 Сейчас в теме
(11)Стоит попробовать - как минимум будет понятно, не отправляется ответ или он таки не разбирается при получении.
15. user1292093 25.12.19 12:20 Сейчас в теме
(14)хорошо, буду смотреть там
16. Sashares 34 25.12.19 12:21 Сейчас в теме
(15)И главное - какой код состояния ответа в базе получается?
17. user1292093 25.12.19 12:22 Сейчас в теме
(16)304, такой я и устанавливаю при ошибке
21. Sashares 34 25.12.19 12:40 Сейчас в теме
(17)Попробуйте убрать BOM из ответа.
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); 
22. user1292093 25.12.19 12:43 Сейчас в теме
(21)сначала было без Кодировки и ВОМ, результат тот же
23. Sashares 34 25.12.19 12:52 Сейчас в теме
24. Sashares 34 25.12.19 12:55 Сейчас в теме
(22)

На багборде есть такая ошибка:

Описание:
В HTTP-сервисе после вызова метода ПолучитьТелоКакСтроку объекта HTTPСервисОтвет возвращается пустой ответ.

Способ обхода:
Повторно вызывать метод HTTPСервисОтвет.УстановитьТелоИзСтроки.

https://bugboard.v8.1c.ru/error/000010103

Но она давно исправлена, с 8.3.7.1759
25. user1292093 25.12.19 12:57 Сейчас в теме
27. lmnlmn 69 25.12.19 12:59 Сейчас в теме
(25)Легко проверить как оно в 8.3.10:
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета);
Сообщить(Ответ.ПолучитьТелоКакСтроку());
Сообщить(Ответ.ПолучитьТелоКакСтроку());
36. user1292093 27.12.19 13:17 Сейчас в теме
37. Sashares 34 27.12.19 15:17 Сейчас в теме
12. lmnlmn 69 25.12.19 12:18 Сейчас в теме
(9) В этом варианте осталась ошибка или нет?
13. user1292093 25.12.19 12:19 Сейчас в теме
18. lmnlmn 69 25.12.19 12:23 Сейчас в теме
(13) Предлагаю почистить кэш, либо добавить эту базу в список баз заново и попробовать запуститься на ней.
Да, и в "Вычислить выражение" у вас всегда эта ошибка будет. Попробуйте Ответ.ПолучитьТелоКакСтроку() для того чтоб узнать что там записалось.
19. lmnlmn 69 25.12.19 12:27 Сейчас в теме
(13)
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета);
Сообщить(Ответ.ПолучитьТелоКакСтроку());
20. user1292093 25.12.19 12:34 Сейчас в теме
26. user1292093 25.12.19 12:59 Сейчас в теме
28. lmnlmn 69 25.12.19 13:01 Сейчас в теме
(26)Стало быть тело ответа в порядке. Надо на стороне получателя тогда смотреть что приезжает.
29. user1292093 25.12.19 13:08 Сейчас в теме
(28)Пустая строка
Прикрепленные файлы:
30. lmnlmn 69 25.12.19 13:12 Сейчас в теме
(29)Попробуйте ОтправитьДляОбработки с выводом тела в файл.
35. user1292093 27.12.19 13:16 Сейчас в теме
8. user-z99999 67 25.12.19 12:13 Сейчас в теме
(2)
Пример
ЗапросPOST = Запрос;
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type","application/json");
ЗапросНН = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере,ЗаголовкиHTTP);
ЗапросНН.УстановитьТелоИзСтроки(Запрос);
Попытка
НТТРОтвет_ = Соединение.ОтправитьДляОбработки(ЗапросНН, Объект.ВыходнойФайл);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать
4. tvm 25.12.19 12:09 Сейчас в теме
"Ответ" что в отладчике показывает?
31. uno-c 235 26.12.19 18:27 Сейчас в теме
304 Not Modified ("не изменялось")
Возможно, в такой ситуации данные берутся из кэша, раз ничего не изменилось. Выдает предыдущую пустоту. Попробуйте с 200м кодом вернуть, чтобы эту гипотезу проверить.
32. uno-c 235 27.12.19 01:24 Сейчас в теме +0.31 $m
Пустое тело на 304 код состояния - так и должно быть по документации Hypertext Transfer Protocol (HTTP/1.1)

https://tools.ietf.org/html/rfc7232#section-4.1
A 304 response cannot contain a message-body; it is always terminated
by the first empty line after the header fields.
34. user1292093 27.12.19 13:16 Сейчас в теме
(32)да все верно, из-за кода состояния. 304 - если нет даты, возвращает пустое тело. Соотвественно при смене кода (400) все заработало
33. uno-c 235 27.12.19 01:31 Сейчас в теме
А то, что Вы попытались через Shift+F9 вычислить выражение

Ответ.УстановитьТелоИзСтроки(?(ЗначениеЗаполнено(Изделие),"", "Изделие") + ?(ЗначениеЗаполнено(Поставки),"", "Поставки") + ?(ЗначениеЗаполнено(Калькуляция),"", "Калькуляция"))


- тоже так и должно выдавать ошибку, потому что Shift+F9 предназначен для вычисления функций или получения свойств. Выполнять процедуры/методы Shift+F9 никогда не умел.
Оставьте свое сообщение

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