Имя: Пароль:
1C
1С v8
Пост запрос с передачей строки base64 в параметрах
,
0 San4opa
 
17.03.16
15:43
Пишу пост запрос на cloud print, нужно передать файлик, для этого в параметре "Content" нужно указать строку base64. При отправке сервер не отвечает (ошибка таймаута). Насколько я понял загвоздка в заголовках, потому что когда убираю заголовок "Type-length", сервер хотя бы отвечает с ошибкой 111, 411 или 412. Или запрос на вывод списка принтеров проходит отлично  и выдает то что мне нужно.
Код с файликом:

file = new File(file_name);
    BinaryData  = new BinaryData(file_name);
    Content = Base64Строка(BinaryData);
    
    post_fields = "&printerid=72be6b4d-8be4-1445-33f6-dde31124b068&title=133&ticket=&content="+Content+"&contentTransferEncoding=base64&ContentType=application/pdf";            
                      
    ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла("txt");
    
    ФайлЗапроса = Новый ЗаписьТекста(ИмяФайлаЗапроса, КодировкаТекста.ANSI);
    ФайлЗапроса.Записать(post_fields);
    ФайлЗапроса.Закрыть();
    НовыйФайл = new File(ИмяФайлаЗапроса);
    РазмерФайла = НовыйФайл.Размер();
    
    headers = new map;
    headers.Insert("Authorization", "Bearer " + access_token);
    headers.Insert("Content-Type", "application/x-www-form-urlencoded");
    headers.Insert("Content-Length",XMLСтрока(РазмерФайла+2));
    
    req = new HTTPRequest("/submit", headers);            
    req.SetBodyFromString(post_fields,"UTF-8",ИспользованиеByteOrderMark.НеИспользовать);

    SSL = new OpenSSLSecureConnection();
    HTTP = new HTTPConnection("http://www.google.com/cloudprint",,,,,5,SSL);
    response = HTTP.Post(req);
    body = response.GetBodyAsString();
    Сообщить(body);

Запрос, который проходит успешно:

file = new File(file_name);
    BinaryData  = new BinaryData(file_name);
    Content = Base64Строка(BinaryData);
    
    post_fields = "&proxy=3D9B828E-F8FD-4F83-A32F-96F1F0B35C6";            
                      
    ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла("txt");
    
    ФайлЗапроса = Новый ЗаписьТекста(ИмяФайлаЗапроса, КодировкаТекста.ANSI);
    ФайлЗапроса.Записать(post_fields);
    ФайлЗапроса.Закрыть();
    НовыйФайл = new File(ИмяФайлаЗапроса);
    РазмерФайла = НовыйФайл.Размер();
    
    headers = new map;
    headers.Insert("Authorization", "Bearer " + access_token);
    headers.Insert("Content-Type", "application/x-www-form-urlencoded");
    //headers.Insert("Content-Length",XMLСтрока(РазмерФайла+2));
    
    req = new HTTPRequest("/list", headers);            
    req.SetBodyFromString(post_fields,"UTF-8",ИспользованиеByteOrderMark.НеИспользовать);

    SSL = new OpenSSLSecureConnection();
    HTTP = new HTTPConnection("http://www.google.com/cloudprint",,,,,5,SSL);
    response = HTTP.Post(req);
    body = response.GetBodyAsString();
    Сообщить(body);
1 Serginio1
 
17.03.16
15:47
2 Поpyчик-4
 
17.03.16
15:59
(0) Если Content-Type = "application/x-www-form-urlencoded", то

                ПодписьЭЦП = КодироватьСтроку(Base64Строка(ТЗЭЦП[0].Подпись.Получить()), СпособКодированияСтроки.КодировкаURL);

Beh, hai capito?
3 San4opa
 
18.03.16
17:52
(1) сделал через multipart/form-data, хотя бы ответ от сервера получаю, но выдает ошибку 403: "не удалось конвертировать в PDF". И так и сяк пробовал. хз че делать.
Код:

Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");

Файл = Новый Файл(file_name);

ИмяФайлаДляСервера = Файл.Имя;
РасширениеФайлаДляСервера = Сред(Файл.Расширение, 2);

ПапкаВременныхФайлов = КаталогВременныхФайлов();
ИмяФайлаОтправки = ПапкаВременныхФайлов + Boundary + ".txt";

МассивФайловДляОбъединения = Новый Массив;

Попытка
    
    ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
    ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.ANSI, Символы.ПС, Ложь);
    
    ФайлОтправкиНачало.ЗаписатьСтроку("--" + Boundary);
    ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""content""; filename=""" + ИмяФайлаДляСервера + """");
    ФайлОтправкиНачало.ЗаписатьСтроку("Content-Type: application/x-octet-stream");
    
    ДвоичныеДанныеФайла = Новый ДвоичныеДанные(file_name);
    ТекстовоеСодержимоеФайла = Base64Строка(ДвоичныеДанныеФайла);
    
    ФайлОтправкиНачало.ЗаписатьСтроку("");
    ФайлОтправкиНачало.ЗаписатьСтроку(ТекстовоеСодержимоеФайла);
    ФайлОтправкиНачало.Закрыть();
    
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
    
    ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt");
    ФайлОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.ANSI, Символы.ПС, Ложь);
    ФайлОтправкиКонец.ЗаписатьСтроку("");
    ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary);
    ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary);
    ФайлОтправкиКонец.ЗаписатьСтроку("Content-disposition: form-data; name=""printerid""" + Символы.ПС);
    ФайлОтправкиКонец.ЗаписатьСтроку("530fcc06-0057-4154-f4a1-85219154aff1");
    ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary);
    ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--");
    ФайлОтправкиКонец.Закрыть();
    
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец);
    
    ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
    
Исключение
    //УстановитьHTML("Не удалось сохранить файл отправки: " + ОписаниеОшибки());
    //Возврат;
КонецПопытки;

ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());

ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
ЗаголовокHTTP.Вставить("Authorization", "Bearer " + access_token);
ЗаголовокHTTP.Вставить("Referer", "https://www.google.com";);

req = new HTTPRequest("/submit", ЗаголовокHTTP);            
req.УстановитьИмяФайлаТела(ИмяФайлаОтправки);

SSL = new OpenSSLSecureConnection();
HTTP = new HTTPConnection("http://www.google.com/cloudprint",,,,,30,SSL);
response = HTTP.Post(req);
body = response.ПолучитьТелоКакСтроку();
Сообщить(body);

Ответ сервера:

{
"success": false,
"message": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 PDF.",
"request": {
  "time": "0",
  "users": [
   "akostin..."
  ],
  "params": {
   "printerid": [
    "530fcc06-0057-4154-f4a1-85219154aff1"
   ]
  },
  "user": "akostin..."
},
"errorCode": 403
}

еще штука такая - на этом сервисе есть еще виртуальный принтер "google drive", который сохраняет файлики. Если в током запросе вставить ID этого принтера, то запрос проходит успешно. но файлик пустой сохраняется, то есть просто объект создается без контента.
4 Serginio1
 
18.03.16
17:59
Наверняка у них есть API на том же C#.
Ты через 1 отправь. Здесь ссылки Использование классов .Net в 1С для новичков
5 Serginio1
 
18.03.16
20:54
6 Serginio1
 
18.03.16
20:59
Вот старый пример на C#
http://stackoverflow.com/questions/7846064/google-cloud-print-using-c-sharp

Я так понимаю не пользуется спросом твой Google Cloud Print
7 San4opa
 
18.03.16
22:06
(5) (6) Ага, видел, спасибо! ща буду разбираться, надеюсь запашет, сейчас используют приложения на андроиде, который через облако печатает, у меня задача такая, что нужно автоматом печатать по кнопке. На форумах видел даже аналогичную ошибку как у меня, но там никто не отвечает.
8 Serginio1
 
18.03.16
22:32
На ГитХабе была библиотека на Java
9 San4opa
 
19.03.16
00:06
(8) Делаю всё по этой схеме, все на нее ссылаются, ошибка та же самая((

POST http://www.google.com/cloudprint/submit?printerid=<printerid>&output=json HTTP/1.1
Host: http://www.google.com
Content-Length: 44544
X-CloudPrint-Proxy: Google-JS
Content-Type: multipart/form-data; boundary=----CloudPrintFormBoundaryqeq6g6ncj5v7

------CloudPrintFormBoundaryqeq6g6ncj5v7
Content-Disposition: form-data; name="capabilities"

{"capabilities":[{}]}
------CloudPrintFormBoundaryqeq6g6ncj5v7
Content-Disposition: form-data; name="contentType"

dataUrl
------CloudPrintFormBoundaryqeq6g6ncj5v7
Content-Disposition: form-data; name="title"

zodiac-pig-pic.jpg
------CloudPrintFormBoundaryqeq6g6ncj5v7
Content-Disposition: form-data; name="content"

data:image/jpeg;base64,JVBERi0xLjQKJeHp69MKMiAwIG...2NgolJUVPRg==
------CloudPrintFormBoundaryqeq6g6ncj5v7--
10 H A D G E H O G s
 
19.03.16
00:10
(9) 1С добавляет перенос строк в base64 через каждые 63 символа. Страдай.
11 H A D G E H O G s
 
19.03.16
00:11
12 Serginio1
 
19.03.16
00:20
(9) Попробуй всетаки http://catalog.mista.ru/public/466052/
там есть пример отправки
Отправляемый контекст можно задавать пятью способами
•MultipartFormDataContent,
•StreamContent,
•StringContent,
•ByteArrayContent,
•FormUrlEncodedContent

Выбирайте тот, который удобен. FormUrlEncodedContent это аналог отправики данных Form при Post Submit.

Теперь перейдем к отправке multipart/form-data.
Процедура Multi_PartНажатие(Элемент)
    // Вставить содержимое обработчика.
    uriSources =ПолучитьСтрокуЗапроса("http://localhost.fiddler:40320";);
    //uriSources ="http://localhost:40320";;
    HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll");
    MultipartFormDataContent=Врап.ПолучитьТип("System.Net.Http.MultipartFormDataContent");

    
    Клиент = Врап.СоздатьОбъект(HttpClient);
    Контент = Врап.СоздатьОбъект(MultipartFormDataContent);
    Клиент.BaseAddress =Врап.СоздатьОбъект("System.Uri",uriSources);
    
    
    // Вариант отправки Ключ-Значение
    Значения = Врап.СоздатьОбъект("System.Collections.Generic.Dictionary`2[System.String,System.String]");

     Значения.Add("Name", "name");
     Значения.Add("id", "id");
  

                //      content.Add(new FormUrlEncodedContent(values));
                Для каждого КлючЗначение из Значения Цикл

                    Контент.Add(Врап.СоздатьОбъект("System.Net.Http.StringContent",КлючЗначение.Value),КлючЗначение.Key);
                КонецЦикла;
                
                
                // Вариант отправки двоичных данных из массива
                Encoding=Врап.ПолучитьТип("System.Text.Encoding");
                
                СтроковыйКонтент =Врап.СоздатьОбъект("System.Net.Http.ByteArrayContent",Encoding.UTF8.GetBytes("Тестовая строка"));

                ContentDisposition=Врап.СоздатьОбъект("System.Net.Http.Headers.ContentDispositionHeaderValue","form-data");
                ContentDisposition.FileName ="ПростоСтрока";
                ContentDisposition.Name ="attachment";


                СтроковыйКонтент.Headers.ContentDisposition = ContentDisposition;
                СтроковыйКонтент.Headers.ContentType = Врап.СоздатьОбъект("System.Net.Http.Headers.MediaTypeHeaderValue","text/plain");
                Контент.Add(СтроковыйКонтент);

                
                // Вариант отправки двоичных данных из файла
                ИмяФайла ="C:/ТестXML";
            
                ПотокФайла =Врап.ПолучитьТип("System.IO.File").OpenRead(ИмяФайла);
                ФайловыйКонтент =Врап.СоздатьОбъект("System.Net.Http.StreamContent",ПотокФайла);
                ContentDisposition=Врап.СоздатьОбъект("System.Net.Http.Headers.ContentDispositionHeaderValue","form-data");
                ContentDisposition.FileName = Врап.ПолучитьТип("System.IO.Path").GetFileName(ИмяФайла);
                
                ФайловыйКонтент.Headers.ContentDisposition = ContentDisposition;
                ФайловыйКонтент.Headers.ContentType = Врап.СоздатьОбъект("System.Net.Http.Headers.MediaTypeHeaderValue","application/octet-stream");
                Контент.Add(ФайловыйКонтент);

                 // Вариант отправки двоичных данных из файла но более краткий
                 ПотокФайла2 =Врап.ПолучитьТип("System.IO.File").OpenRead(ИмяФайла);
                 ФайловыйКонтент2 =Врап.СоздатьОбъект("System.Net.Http.StreamContent",ПотокФайла2);
                 Контент.Add(ФайловыйКонтент2,"attachment","TestXml");

                requestUri = "api/values/SendFiles";

                Результат = Клиент.PostAsync(requestUri, Контент).Result;
                стр = Результат.Content.ReadAsStringAsync().Result;
                
                Сообщить(стр);
                ЗакрытьРесурс(Клиент);
                ЗакрытьРесурс(Контент);
                ЗакрытьРесурс(ПотокФайла);



// Вот как выглядит отправляемый запрос                
//POST http://localhost:40320/api/values/SendFiles HTTP/1.1
//Content-Type: multipart/form-data; boundary="9f2d525a-7383-46ab-8fc7-419d73486c02"
//Host: localhost:40320
//Content-Length: 811
//Expect: 100-continue
//Connection: Keep-Alive

//--9f2d525a-7383-46ab-8fc7-419d73486c02
//Content-Type: text/plain; charset=utf-8
//Content-Disposition: form-data; name=Name

//name
//--9f2d525a-7383-46ab-8fc7-419d73486c02
//Content-Type: text/plain; charset=utf-8
//Content-Disposition: form-data; name=id

//id
//--9f2d525a-7383-46ab-8fc7-419d73486c02
//Content-Disposition: form-data; filename="=?utf-8?B?0J/RgNC+0YHRgtC+0KHRgtGA0L7QutCw?="; name=attachment
//Content-Type: text/plain

//Тестовая строка
//--9f2d525a-7383-46ab-8fc7-419d73486c02
//Content-Disposition: form-data; filename="=?utf-8?B?0KLQtdGB0YJYTUw=?="
//Content-Type: application/octet-stream

//12345
//--9f2d525a-7383-46ab-8fc7-419d73486c02
//Content-Disposition: form-data; name=attachment; filename=TestXml; filename*=utf-8''TestXml

//12345
//--9f2d525a-7383-46ab-8fc7-419d73486c02--

КонецПроцедуры
13 San4opa
 
19.03.16
00:37
(10) Да я и через файл пробовал, без кодировки, та же самая петрушка.
14 San4opa
 
19.03.16
00:38
(12) придется пробовать так, я так понимаю надо это дело сначала на сервер устанавливать.
15 Serginio1
 
19.03.16
01:00
(14) Хоть на клиента
16 Serginio1
 
19.03.16
01:09
(14)  Посмотри на аналог из явы
http://codedmi.xyz/questions/4365704/post-multipart-form-with-google-http-java-client
17 San4opa
 
19.03.16
01:41
(16) Да тут ничего нового. Структура заголовка та же самая, почему она не работает из 1с не понятно.
18 San4opa
 
19.03.16
03:45
Вроде нашел функцию на скрипте кодировки в base64, кто-нибудь может подсказать можно ли ее юзануть в 1с?

http://javascript.ru/php/base64_decode
19 San4opa
 
19.03.16
05:12
(12) Не совсем понял как мне заголовки свои строить
20 Serginio1
 
19.03.16
08:50
(19) Для начала прочитать статью.
http://catalog.mista.ru/public/466052/

Там есть такой код

handler = врап.СоздатьОбъект(HttpClientHandler);

    Сообщить(ServicePointManager.DefaultConnectionLimit);
    ServicePointManager.DefaultConnectionLimit=100;


            Клиент = Врап.СоздатьОбъект(HttpClient,handler);


// Использование заголовков не обязательно


// В данном случае это пример их использования
            Клиент.DefaultRequestHeaders.Connection.Add("keep-alive");
            CacheControl=Врап.СоздатьОбъект("System.Net.Http.Headers.CacheControlHeaderValue");
            CacheControl.MaxAge = Врап.ПолучитьТип("System.TimeSpan").Zero;
            Клиент.DefaultRequestHeaders.CacheControl = CacheControl;
            Клиент.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,*/*");
            Клиент.DefaultRequestHeaders.Add("Accept-Language", "ru-Ru");
            Клиент.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko");
            
            uriSources =ПолучитьСтрокуЗапроса("http://localhost.fiddler:40320/api/values/GetIdAsync/";);
    
           Клиент.BaseAddress =Врап.СоздатьОбъект("System.Uri",uriSources);
21 Serginio1
 
19.03.16
08:52
Там же еще пример
Процедура TestGetНажатие(Элемент)
    // Вставить содержимое обработчика.
     HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll");
    
    HttpUtility=Врап.ПолучитьТипИзСборки("System.Web.HttpUtility","System.Web.dll");

    
    Попытка

    uriSources =ПолучитьСтрокуЗапроса("http://localhost.fiddler:40320/api/values/";);
       handler = врап.СоздатьОбъект(HttpClientHandler);
    
    cookieContainer = Врап.СоздатьОбъект("System.Net.CookieContainer");
  
   handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate);


// Используем cookieContainer для задания куков со стороны клиента. Куки со стороны сервера автоматически сохраняются.


cookieContainer.Add(Врап.СоздатьОбъект("System.Net.Cookie","TestCookie", "TruLyaLya", "/", "localhost"));
   handler.CookieContainer=cookieContainer;
   handler.UseCookies=истина;

        Клиент = Врап.СоздатьОбъект(HttpClient,handler);
        DefaultRequestHeaders=Клиент.DefaultRequestHeaders;
        DefaultRequestHeaders.Connection.Add("keep-alive");
            CacheControl=Врап.СоздатьОбъект("System.Net.Http.Headers.CacheControlHeaderValue");
            CacheControl.MaxAge = Врап.ПолучитьТип("System.TimeSpan").Zero;
            DefaultRequestHeaders.CacheControl = CacheControl;
            
            DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,*/*");
            DefaultRequestHeaders.Add("Accept-Language", "ru-Ru");
            DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko");


        //Использум BaseAddress, что бы в дальнейшем задавать адрес только ресурса


    Клиент.BaseAddress =Врап.СоздатьОбъект("System.Uri",uriSources);
        Стр=Клиент.GetStringAsync("GetHeaders").Result;
22 San4opa
 
19.03.16
11:24
(21) все равно не нашел как создаются заголовки Content-Type и Content-Length и как размер файла определить.
23 Serginio1
 
19.03.16
12:10
(22) Они автоматически заполняются
24 Serginio1
 
19.03.16
12:11
Вернее
ContentDisposition=Врап.СоздатьОбъект("System.Net.Http.Headers.ContentDispositionHeaderValue","form-data");

                ContentDisposition.FileName = Врап.ПолучитьТип("System.IO.Path").GetFileName(ИмяФайла);

                

                ФайловыйКонтент.Headers.ContentDisposition = ContentDisposition;

                ФайловыйКонтент.Headers.ContentType = Врап.СоздатьОбъект("System.Net.Http.Headers.MediaTypeHeaderValue","application/octet-stream");

                Контент.Add(ФайловыйКонтент);
25 Serginio1
 
19.03.16
12:13
26 Serginio1
 
19.03.16
12:25
27 Serginio1
 
19.03.16
13:13
ПотокФайла =Врап.ПолучитьТип("System.IO.File").OpenRead(ИмяФайла);

                ФайловыйКонтент =Врап.СоздатьОбъект("System.Net.Http.StreamContent",ПотокФайла);

                ContentDisposition=Врап.СоздатьОбъект("System.Net.Http.Headers.ContentDispositionHeaderValue","form-data");

                ContentDisposition.FileName = Врап.ПолучитьТип("System.IO.Path").GetFileName(ИмяФайла);

                

                ФайловыйКонтент.Headers.ContentDisposition = ContentDisposition;
//Вместо application/octet-stream поставить application/pdf
//                ФайловыйКонтент.Headers.ContentType = Врап.СоздатьОбъект("System.Net.Http.Headers.MediaTypeHeaderValue","application/octet-stream");
ФайловыйКонтент.Headers.ContentType = Врап.СоздатьОбъект("System.Net.Http.Headers.MediaTypeHeaderValue","application/pdf");
                Контент.Add(ФайловыйКонтент);
28 San4opa
 
19.03.16
13:20
(27) до этого еще не дошел, сейчас ошибку пока на клиенте выдает, мол неправильно запрос построен
29 San4opa
 
19.03.16
13:26
(27) ЗащищенноеСоединениеOpenSSL нужно, без него не хавает. Как его вызвать подскажите плиз.
30 Serginio1
 
19.03.16
13:56
Не нужен никакой ЗащищенноеСоединениеOpenSSL
Ты должен указать HTPS. Кстати для
HTTP = new HTTPConnection("http://www.google.com/cloudprint",,,,,5,SSL);

Не нужно указывать http://
Результат = Клиент.PostAsync(requestUri, Контент).Result;
Где requestUri может быть полныи путем
Либо

Клиент.BaseAddress =Врап.СоздатьОбъект("System.Uri","https://www.google.com/cloudprint";);

requestUri="/submit"
31 Serginio1
 
19.03.16
14:17
Можно про HTTPClient здесь почитать
32 Serginio1
 
19.03.16
14:21
33 San4opa
 
19.03.16
14:45
(30) Получилось отправить, но ошибка та же самая
34 San4opa
 
19.03.16
14:49
(30) Получилось отправить текст таким способом:

//Вариант отправки двоичных данных из массива
    Encoding=Врап.ПолучитьТип("System.Text.Encoding");
    
    СтроковыйКонтент = Врап.СоздатьОбъект("System.Net.Http.ByteArrayContent",Encoding.UTF8.GetBytes("Этикетка"));
    
    ContentDisposition=Врап.СоздатьОбъект("System.Net.Http.Headers.ContentDispositionHeaderValue","form-data");
    ContentDisposition.FileName ="teest";
    ContentDisposition.Name ="content";
    
    
    СтроковыйКонтент.Headers.ContentDisposition = ContentDisposition;
    СтроковыйКонтент.Headers.ContentType = Врап.СоздатьОбъект("System.Net.Http.Headers.MediaTypeHeaderValue","text/plain");
    Контент.Add(СтроковыйКонтент);
35 San4opa
 
19.03.16
15:02
(30) всё Взлетело! Спасибо за помощь! без Вас бы еще долго копался.
36 Serginio1
 
19.03.16
15:05
Тебе еще нужно добавить

StringContent=Врап.ПолучитьТип("System.Net.Http.StringContent");

Контент.Add(Врап.СоздатьОбъект(StringContent,"printer"),printer);
Контент.Add(Врап.СоздатьОбъект(StringContent,"capabilities"),printer);
37 Serginio1
 
19.03.16
17:10
Кстати пример получения куков

    cookieContainer = Врап.СоздатьОбъект("System.Net.CookieContainer");
    
  handler=Врап.СоздатьОбъект(HttpClientHandler);
  handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ;
  handler.CookieContainer=cookieContainer;
  
  

    Клиент = Врап.СоздатьОбъект(HttpClient,handler);
    uriSources ="http://www.telerik.com";;
    Ури=Врап.СоздатьОбъект("System.Uri",uriSources);
    Клиент.BaseAddress =Ури;
    
   Стр=Клиент.GetStringAsync("/UpdateCheck.aspx?isBeta=False").Result;
    Куки = cookieContainer.GetCookies(Ури);
    Для  каждого кук  из Куки Цикл
        Сообщить(кук.Name + ": " + кук.Value);
    КонецЦикла;

    кук=Куки.get_Item("sid");
    Сообщить(кук.Name + ": " + кук.Value);
38 San4opa
 
19.03.16
17:36
(37) Буду иметь ввиду, возможно, пригодится в дальнейшем. В гугле, насколько я понял, через токен авторизуются.
39 Serginio1
 
19.03.16
17:53
Ну значит на всякий случай.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший