1

Тема: AHK: VK API - Загрузка документа

День добрый, спрошу и тут. Может быть кто-то сталкивался раньше с подобным.
Есть ли какой-то способ отправить документ текстового файла хранящийся локально на ПК, на сайт данным способом: https://vk.com/dev/docs.getMessagesUploadServer.
Именно пост запросом, на сколько знаю тут нужно задействовать json библиотеку. Но как её использовать даже не представляю.
В конечном итоге после запроса нужно получить подобный код:


{"file":"27006715|0|-1|816228|33f5f0d21a|txt|51|test.txt|30fdb9cc08bde5d94034a349c14e140d|43b838a96032843864192d32ceb4638f||||W10="}

Идея у меня такая что бы, когда пользователи мне пишут в личное сообщение Вконтакте, автоматически выбирался новый файл на рабочем столе, загружался и отсылался в личном сообщении. Сама система чтения сообщения и ответа на них есть и работает так же POST запросом.
Если файл загрузить в ручную в поле "Примеры запроса" на сайте https://vk.com/dev/docs.getMessagesUploadServer, получив подобный код который написал ваше. Так могу уже отправить файл. Но хотелось бы сделать это автономным т.е без работы пользователя.
Заранее спасибо за ответ.

2

Re: AHK: VK API - Загрузка документа

slavafedora пишет:

знаю тут нужно задействовать json библиотеку

Необязательно. Можно без нее ответ от сервера распарсить.
Тут вам надо:

Передайте файл на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полем file. Это поле должно содержать файл в формате multipart/form-data.

https://vk.com/dev/upload_files_2?f=10. … 0%BE%D0%B2
Изучайте:
https://ru.wikipedia.org/wiki/Multipart/form-data
https://autohotkey.com/boards/viewtopic.php?t=7647

3

Re: AHK: VK API - Загрузка документа

Адрес я для загрузки получаю, а как дальше передать файл по нему так и не понял. Именно поэтому и пишу сюда.


ID := "this vk ID"
Token := "this you token"
ComObjError(false)
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("POST", "https://api.vk.com/method/docs.getMessagesUploadServer?peer_id=" ID "&type=doc&access_token=" Token, true)
whr.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36")
whr.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
whr.Send()
whr.WaitForResponse(60)
if (whr.Status != 200) {
	return
}
MsgBox, % whr.ResponseText

4

Re: AHK: VK API - Загрузка документа

Тут уже вам самому придется додумывать.
Я не пользуюсь vk api.
По ссылкам, которые я привел, все расписано.