![]() |
![]() |
![]() |
|
Отправка из 1С 8.1 POST запросов на web-сервер | ☑ | ||
---|---|---|---|---|
0
beonsys
27.04.11
✎
21:32
|
Здравствуйте, форумчане.
Возникла необходимость отправки post-запроса из 1С Предприятие 8.1 такого плана: POST /token HTTP/1.1 Host: oauth.yandex.ru Content-type: application/x-www-form-urlencoded Content-Length: <length> grant_type=authorization_code&client_id=<client_id>&code=<code> Если кто сталкивался с таким вопросом, помогите пожалуйста советом, уже 2 дня бьюсь, все никак не получается. От сервера приходит ответ, что неверный запрос. Использовал метод HTTPСоединение..ОтправитьДляОбработки() |
|||
1
beonsys
27.04.11
✎
22:25
|
up
|
|||
2
beonsys
28.04.11
✎
02:10
|
up
|
|||
3
asady
28.04.11
✎
09:47
|
(0) код в студию
|
|||
4
beonsys
01.05.11
✎
22:49
|
ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла(); Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()),"-",""); ФайлОтправки = Новый ТекстовыйДокумент; ФайлОтправки.УстановитьТипФайла(КодировкаТекста.Системная); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("Content-Disposition: form-data; name=""submit""" + Символы.ПС); ФайлОтправки.ДобавитьСтроку("1"); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("Content-Disposition: form-data; name=""grant_type""" + Символы.ПС); ФайлОтправки.ДобавитьСтроку("authorization_code"); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("Content-Disposition: form-data; name=""client_id""" + Символы.ПС); ФайлОтправки.ДобавитьСтроку(Константы.ЯндексИД.Получить()); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("Content-Disposition: form-data; name=""code""" + Символы.ПС); ФайлОтправки.ДобавитьСтроку(КодПодтверждения); ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.Записать(ИмяФайлаОтправки,КодировкаТекста.Системная); ФайлОтправки = Новый Файл(ИмяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("POST /token HTTP/1.0"); ЗаголовокHTTP.Вставить("Host", "oauth.yandex.ru"); ЗаголовокHTTP.Вставить("Content-Type","multipart/form-data; boundary=" + Boundary); ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки); ИнтернетПрокси = ПроцедурыОбменаССайтом.ПолучитьИнтернетПрокси(); HTTPСоединение = Новый HTTPСоединение("oauth.yandex.ru",,,,ИнтернетПрокси,Истина); Попытка HTTPСоединение.ОтправитьДляОбработки(ИмяФайлаОтправки, "/token", ИмяФайлаОтвета,ЗаголовокHTTP); Исключение КонецПопытки; УдалитьФайлы(ИмяФайлаОтправки); ФайлОтвета = Новый Файл(ИмяФайлаОтвета); Если ФайлОтвета.Существует() Тогда ТекстОтвета = Новый ТекстовыйДокумент(); ТекстОтвета.Прочитать(ИмяФайлаОтвета); Если ТекстОтвета.КоличествоСтрок() > 0 Тогда ОтветСервера = ТекстОтвета.ПолучитьТекст(); Если ОтветСервера = "{""error"": ""invalid_request""}" Тогда Сообщить("Ответ сервера: Неверный формат запроса"); ИначеЕсли ОтветСервера = "{""error"": ""invalid_grant""}" Тогда Сообщить("Ответ сервера: Неверный или просроченный код подтверждения"); ИначеЕсли ОтветСервера = "{""error"": ""unsupported_grant_type""}" Тогда Сообщить("Ответ сервера: Неверное значение параметра grant_type"); Иначе НомерПервогоСивола = Найти(ОтветСервера,":")+3; Токен = Сред(ОтветСервера,НомерПервогоСивола,32); Константы.ЯндексТокен.Установить(Токен); Константы.ОкончаниеДействияТокенаЯндекс.Установить(ДобавитьМесяц(ТекущаяДата(),3)); Предупреждение("Токен успешно получен!"); УдалитьФайлы(ИмяФайлаОтвета); КонецЕсли; Иначе Сообщить("Отправка данных на сервер: Получен пустой ответ от вервера"); Возврат; КонецЕсли; КонецЕсли; |
|||
5
beonsys
01.05.11
✎
22:49
|
Вот так я решил свой вопрос
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |