|
1C POST запрос к сайту, JSON, экранируются кавычки | ☑ | ||
---|---|---|---|---|
0
Darhon
15.02.19
✎
12:35
|
Доброго времени суток. При отправке из 1С запроса ПОСТ, с строкой json внутри на сервер приходит запрос с экранированными кавычками.
\"rateId\":\"0\",\"email\":\"[email protected]\",\"phone\":\" 79111111111\" Вот код Соединение = Новый HTTPСоединение( "***************.net", // сервер (хост) 443, // порт, по умолчанию для http используется 80, для https 443 , // пользователь для доступа к серверу (если он есть) , // пароль для доступа к серверу (если он есть) , // здесь указывается прокси, если он есть , // таймаут в секундах, 0 или пусто - не устанавливать Новый ЗащищенноеСоединениеOpenSSL() ); Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); //Создали запись ЗаписьJSON ЗаписьJSON = Новый ЗаписьJSON; //Задаем параметры без переноса строк, можно и с переносом, как кому нравится тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); ЗаписьJSON.УстановитьСтроку(тПараметрыJSON); СтруктураДанныхJSON = Новый Структура; СтруктураДанныхJSON.Вставить("rateId", "0"); СтруктураДанныхJSON.Вставить("email", "[email protected]"); СтруктураДанныхJSON.Вставить("phone", "+79111111111"); ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON); СтрокаJS = ЗаписьJSON.Закрыть(); // Получаем текст корневой страницы через GET-запрос. Запрос = Новый HTTPЗапрос("/order/create", Заголовки); Запрос.УстановитьТелоИзСтроки("body="+СтрокаJS); // Если бы нужна была другая страница, мы бы указали, // например, "/about" или "/news". Результат = Соединение.ОтправитьДляОбработки(Запрос); Как избавится от экранов в запросе?? |
|||
1
Darhon
15.02.19
✎
12:36
|
("Content-type", "application/json"); пробовал
Приходит просто пустой запрос |
|||
2
Вафель
15.02.19
✎
12:41
|
так у тебя не json, а строка url содержащая json
|
|||
3
Darhon
15.02.19
✎
12:44
|
ну да строка содержащая json. сервер ее нормально принимает только экраны все дело портят
|
|||
4
Darhon
15.02.19
✎
12:55
|
В 1С отладчиком смотрю, никаких экранирующих символов в строке нет. Если строку просто отправлять на сервер не форматируя в json то тоже приходит без искажений
|
|||
5
Nyoko
15.02.19
✎
13:03
|
Запрос.УстановитьТелоИзСтроки("body="+СтрокаJS);
замени на Запрос.УстановитьТелоИзСтроки(СтрокаJS, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); |
|||
6
Darhon
16.02.19
✎
13:27
|
(5)
к сожалению не помогло, все без изменений |
|||
7
Darhon
16.02.19
✎
13:55
|
Самое интересное что
Запрос.УстановитьТелоИзСтроки("rateId=0&[email protected]&phone=+79111111111"); Отправляется нормально и сервер ее нормально понимает. А вот так вот отправляется ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON); СтрокаДЖ=ЗаписьJSON.Закрыть(); Запрос = Новый HTTPЗапрос("/order/create", Заголовки); Запрос.УстановитьТелоИзСтроки(СтрокаДЖ); отправляется норм (отладчик строкаДЖ показывает в виде нормальной строки А на сервер приходит в виде "/"rateId"/":"/"0"/"..... само собойсервер не воспринимает такое ( |
|||
8
Necessitudo
16.02.19
✎
22:00
|
Дай-ка угадаю - сервер на Java?
|
|||
9
Necessitudo
16.02.19
✎
22:05
|
Попробуй так -
Content-Type: text/plain |
|||
10
dmitryds
16.02.19
✎
22:17
|
application/x-www-form-urlencoded;charset=utf-8
Не подразумевает отправку json |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |