|   |   | 
| 
 | Отправить длинную JSON строку. | ☑ | ||
|---|---|---|---|---|
| 0
    
        antihacker 01.07.18✎ 14:11 | 
        Всем привет !
 Вот работающий код, который отправляет в HTTP сервис 1С, JSON строку. тСоединение = Новый HTTPСоединение("myfoods.kz", 443, ЭтотОбъект.Пользователь, ЭтотОбъект.Пароль,,,Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ),); //Отправим запрос тHTTPЗапрос = Новый HTTPЗапрос("/BIS/hs/InDocSinh?Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON+"&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON+"&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON); //ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt"); тHTTPОтвет = тСоединение.ОтправитьДляОбработки(тHTTPЗапрос); Но этот код перестает работать, когда JSON длинный. Пишет HTTP Error 414. The request URL is too long . Теперь стараюсь вот так отправить тСоединение = Новый HTTPСоединение("myfoods.kz", 443, ЭтотОбъект.Пользователь, ЭтотОбъект.Пароль,,,Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ),); //Отправим запрос тHTTPЗапрос = Новый HTTPЗапрос("/BIS/hs/InDocSinh"); тHTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded"); ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt"); тHTTPЗапрос.УстановитьТелоИзСтроки("Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); тHTTPЗапрос.УстановитьТелоИзСтроки("&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); тHTTPЗапрос.УстановитьТелоИзСтроки("&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); тHTTPОтвет = тСоединение.ОтправитьДляОбработки(тHTTPЗапрос,ИмяФайлаОтвета); Но сервер не может обработать строку запроса. Ошибка при вызове метода контекста (УстановитьСтроку) Это здесь Doc_main_data = Запрос.ПараметрыЗапроса.Получить("Doc_main_data"); //Данные документа ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Doc_main_data); Что я не правильно делаю ? | |||
| 1
    
        asady 01.07.18✎ 14:26 | 
        (0) тупо через определенные промежутки вставь Символы.ПС     | |||
| 2
    
        antihacker 01.07.18✎ 14:27 | 
        НЕ очень понял     | |||
| 3
    
        asady 01.07.18✎ 14:35 | 
        (2) тупо разбей строку вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON на подстроки вставив Символы.ПС через 255 символов например     | |||
| 4
    
        antihacker 01.07.18✎ 14:40 | 
        Извини, не могу понять. А как потом отправить одним   параметром ?     | |||
| 5
    
        asady 01.07.18✎ 14:45 | 
        (4)
 mylongstring="my very very long string"; mylongmultistring = "my very"+Символы.ПС.+" very long"+Символы.ПС.+" string"; | |||
| 6
    
        PR 01.07.18✎ 14:59 | 
        Мда     | |||
| 7
    
        sechs 01.07.18✎ 15:04 | 
        (0) И как ты думаешь, что будет, если три раза подряд УстановитьТелоИзСтроки ?     | |||
| 8
    
        antihacker 01.07.18✎ 15:07 | 
        Да, да. Вот и пробую
 тСоединение = Новый HTTPСоединение("myfoods.kz", 443, ЭтотОбъект.Пользователь, ЭтотОбъект.Пароль,,,Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ),); //Отправим запрос //тHTTPЗапрос = Новый HTTPЗапрос("/BIS/hs/InDocSinh"); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("POST", "/BIS/hs/InDocSinh?Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON+"&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON+"&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON); ЗаголовокHTTP.Вставить("Host:", "myfoods.kz"); ЗаголовокHTTP.Вставить("Content-Type", "application/json; charset=utf-8"); //тHTTPЗапрос = Новый HTTPЗапрос("/BIS/hs/InDocSinh?Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON+"&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON+"&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON); ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt"); тHTTPЗапрос = Новый HTTPЗапрос("http://myfoods.kz",ЗаголовокHTTP); тHTTPОтвет = тСоединение.ОтправитьДляОбработки(тHTTPЗапрос,ИмяФайлаОтвета); Пишет HTTP Error 400. The request has an invalid header name. | |||
| 9
    
        antihacker 01.07.18✎ 15:39 | 
        Вот так должен был зараюотать       тСоединение = Новый HTTPСоединение("myfoods.kz", 443, ЭтотОбъект.Пользователь, ЭтотОбъект.Пароль,,,Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ),);  
 //Отправим запрос // //тHTTPЗапрос = Новый HTTPЗапрос("/BIS/hs/InDocSinh?Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON+"&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON+"&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON); ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("txt"); тHTTPЗапрос = Новый HTTPЗапрос("/BIS/hs/InDocSinh?"); тHTTPЗапрос.УстановитьТелоИзСтроки("Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON+"&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON+"&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); тHTTPОтвет = тСоединение.ОтправитьДляОбработки(тHTTPЗапрос,ИмяФайлаОтвета); Но сервер вообще ничего не возвращает, даже код ошибки. | |||
| 10
    
        Asmody 01.07.18✎ 16:47 | 
        Это кто придумал json в параметрах get-запроса отправлять?!     | |||
| 11
    
        antihacker 01.07.18✎ 16:52 | 
        А POST - ом как отправить ?     | |||
| 12
    
        antihacker 01.07.18✎ 16:52 | 
        тHTTPЗапрос = Новый HTTPЗапрос("POST");
 ////тHTTPЗапрос.УстановитьТелоИзСтроки("Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON+"&ECC_Obligations_List="+вхДанныеДляОтправки.СписокЭКРОбязJSON+"&ECC_Payment_List="+вхДанныеДляОтправки.СписокЭКРПлатежJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать); тHTTPЗапрос.УстановитьТелоИзСтроки("Doc_main_data="+вхДанныеДляОтправки.ОсновныеДанныеДокументаJSON); тHTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); тHTTPОтвет = тСоединение.ОтправитьДляОбработки(тHTTPЗапрос); | |||
| 13
    
        antihacker 01.07.18✎ 16:53 | 
        тоже самое     | |||
| 14
    
        antihacker 01.07.18✎ 17:10 | 
        А вообще можно отправлять длинные JSON  сроки ? Или их надо отправить в тексовом файле.
 Кстати. Со строны HTTP сервиса получаю так Ответ = Новый HTTPСервисОтвет(200); Doc_main_data = Запрос.ПараметрыЗапроса.Получить("Doc_main_data"); Ответ.УстановитьТелоИзСтроки(Doc_main_data, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); Возврат Ответ; Клиент получает пустой ответ. Даже код ошибки не видно. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |