|
Пост запрос с передачей строки 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
|
Смотри пример на питоне
https://developers.google.com/cloud-print/docs/pythonCode#multipart-form-data |
|||
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
|
Ну значит на всякий случай.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |