|
Как передать файл через POST запрос | ☑ | ||
---|---|---|---|---|
0
SeregaMW
08.06.15
✎
18:57
|
Пишу загрузку фоток в контакт
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST","https://api.vk.com/method/photos.getWallUploadServer",0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","utf-8"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "utf-8"); WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); ПараметрыПОСТ = "group_id="+СтрЗаменить(строка.Ссылка.ИДГруппы, "-","")+"&v=5.0" + "&access_token="+УчетнаяЗапись.Ссылка.Токен; WinHttp.Send(ПараметрыПОСТ); ТекстОтвета = WinHttp.ResponseText(); 1. С помощью метода photos.getWallUploadServer приложение узнает http-адрес для загрузки фотографии на стену текущего пользователя, другого пользователя или группы в зависимости от переданных параметров user_id или group_id. 2. Приложение формирует POST-запрос на полученный адрес. Запрос должен включать поле photo, содержащее файл с изображением (JPG, PNG, BMP или GIF) Пример результата загрузки фотографии: {"server": "1234", "photo": "1234", "hash": "12345abcde"} Первый пункт получился формирую второй запрос WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST",СтрЗаменить(Сред(ТекстОтвета, Найти(ТекстОтвета, "http"),Найти(ТекстОтвета, "wallphoto")-Найти(ТекстОтвета, "http")+11),"\","")); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","utf-8"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "utf-8"); WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); ПараметрыПОСТ = СтрЗаменить(Сред(ТекстОтвета, Найти(ТекстОтвета, "&"),Найти(ТекстОтвета, "wallphoto")-Найти(ТекстОтвета, "&")+11),"\","")+"&Photo="+Base64Строка(Новый ДвоичныеДанные("C:\Контакт\Выгрузкакартинок"+"\"+ИмяФайла)); ПараметрыПОСТ =""; //"photo=" + СодержимоеФайла; WinHttp.Send(ПараметрыПОСТ); ТекстОтвета = WinHttp.ResponseText(); в ответ возвращает "{"server":623416,"photo":"[]","hash":"ad0aac35271ecbf012a163dad22afe35"}" поле фото пустое, по чему то не передается или сервер не принимает файл. |
|||
1
Asmody
08.06.15
✎
19:36
|
пользуйся нативными средствами
|
|||
2
SeregaMW
08.06.15
✎
19:44
|
(1) Это как? Можешь по подробней рассказать?
|
|||
3
Asmody
08.06.15
✎
19:45
|
(2) поподробнее в СП по слову HTTPСоединение
|
|||
4
SeregaMW
08.06.15
✎
20:26
|
Пробовал через HTTPСоединение
HTTPКанал = Новый HTTPСоединение("http://cs623416.vk.com"); HTTPКанал.ОтправитьДляОбработки("C:\Контакт\Выгрузкакартинок"+"\"+ИмяФайла,СтрЗаменить(Сред(ТекстОтвета, Найти(ТекстОтвета, "com")+3,Найти(ТекстОтвета, "wallphoto")-Найти(ТекстОтвета, "com")+9),"\",""),"C:\Контакт\тк.txt"); параметры для отправитьДляОбработки 1."C:\Контакт\Выгрузкакартинок\IMG_00000000033_1.jpg" 2."/upload.php?act=do_add&mid=289680097&aid=-14&gid=94169434&hash=f3a90a3cad30c5f1a6d3a11a1f87088a&rhash=71f3a635ed150c1c8627d95b21c59b04&swfupload=1&api=1&wallphoto=1"" 3."C:\Контакт\тк.txt" Выдает ошибку {Форма.Форма.Форма(1262)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) HTTPКанал.ОтправитьДляОбработки("C:\Контакт\Выгрузкакартинок"+"\"+ИмяФайла,СтрЗаменить(Сред(ТекстОтвета, Найти(ТекстОтвета, "com")+3,Найти(ТекстОтвета, "wallphoto")-Найти(ТекстОтвета, "com")+9),"\",""),"C:\Контакт\тк.txt"); по причине: Ошибка работы с Интернет: Couldn't resolve host name |
|||
5
Asmody
08.06.15
✎
21:32
|
(4) плохо читал СП. смотри про конструктор HTTPСоединение
|
|||
6
Serginio1
08.06.15
✎
22:29
|
||||
7
Сергиус
09.06.15
✎
01:14
|
(4) попробуй в конструкторе без "http://" адрес указывать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |