![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Как сформировать post запрос?
Получаю миниатюру картинки из интернета, с кроссдоменником всё нормально. Вывожу на флешку, миниатюру показывает. По этой маленькой картинке кликаю, загружается большая, её тоже показывает. И тут надо загрузить эту большую картинку в фотоальбом Вконтакте, именно это не получается. Читал доки вконтакте по вк api. Прочитал "Процесс загрузки файлов на сервер ВКонтакте" http://vkontakte.ru/page2372787 Там 3 этапа. Первый этап успешен. Получил http-адрес для загрузки фотографий, проверил, этот адрес такой же как в примере http://vkontakte.ru/pages.php?o=-1&p...etUploadServer Теперь этап второй: Приложение формирует POST-запрос на полученный адрес. Именно это и не получается. Искал на этом форуме, похожие темы поднимались. Пробовал: UploadPostHelper ru.inspirit.net.MultipartURLLoader; http://www.flasher.ru/forum/showthread.php?t=140804 http://blog.inspirit.ru/?p=139 http://www.flasher.ru/forum/showthread.php?t=136249 http://www.adobe.com/livedocs/flash/...Reference.html (там пример запроса) http://vkontakte.typing.by/ и другие темы с этого форума. Ничего не помогло. Несколько дней мучаюсь. Самое главное, что с вк api научился взаимодействовать, но вот только post запрос не могу составить. Есть bitmap data большой картинки, переменная bmpd. //С помощью метода photos.getUploadServer узнали http-адрес для загрузки фотографий var xml:XML = new XML(myLoader.data); //var xml:XML = new XML(evt.target); tf.text = tf.text + "\r\n xml.elements(upload_url)="+xml.elements("upload_url")+"\r\n" +"___qwe_"+xml.elements("upload_url").toString()+" \r\n "; //теперь формируем post-запрос на полученный адрес. var jpgEncoder:JPGEncoder= new JPGEncoder(); var bArray:ByteArray= jpgEncoder.encode(bmpd);// bmpd - готовая bitmap data var myRequest:URLRequest = new URLRequest(xml.elements("upload_url").toString()); var myLoader1:URLLoader = new URLLoader(); var myVariables:URLVariables = new URLVariables(); myLoader1.dataFormat = URLLoaderDataFormat.BINARY; //myVariables.file1 = bArray; //myRequest.data = myVariables; myRequest.data = bArray; myRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary(); myRequest.requestHeaders.push(new URLRequestHeader("Content-type", "application/octet-stream")); myRequest.method = URLRequestMethod.POST; myRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) ); myLoader1.addEventListener(Event.COMPLETE, function (evt:Event):void { tf.text = tf.text + "\r\n " + "evt.target="+evt.target.data; } ); myLoader1.load(myRequest); Цитата:
Я прошу совета, как сформировать этот проклятый post запрос? Последний раз редактировалось zemozes; 18.07.2010 в 17:39. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Скачал http://code.google.com/p/v-kontakte/...otoUploader.as
Не помогло. В текстовом поле выдало то же самое, что я написал в первом посте. //теперь формируем post-запрос на полученный адрес. var vk_main:Vkontakte = new Vkontakte(); vk_main.isTestMode=false; vk_main.privateKey = 'вырезано'; var fu:PhotoUploader = new PhotoUploader(vk_main); var jpgEncoder:JPGEncoder= new JPGEncoder(); var bArray:ByteArray= jpgEncoder.encode(bmpd);// bmpd - готовая bitmap data fu.files.push(bArray); fu.addEventListener(by.typing.vkontakte.events.LoaderEvent.UPLOAD_COMPLETE, function (e:by.typing.vkontakte.events.LoaderEvent):void{ tf.text = "123"; }); fu.upload('123456', false); privateKey я задал. А как задать api_id нету. Ввожу vk_main, нажимаю точку, а ничего похожего на api_id нету. Да, выдаёт список свойств, но там нету api_id. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Посмотри примеры в группе http://vkontakte.ru/club13587210
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
udaaff, я вверху писал, что не могу указать api_id.
Всё гениальное просто Я то думал, что просто vk_main.api_id. Самому смешно. Добавлено через 1 час 38 минут Цитата:
photoLoader = new PhotoLoader(vkontakte); photoLoader.addEventListener(VkontakteErrorEvent.ERROR, errorHandler); photoLoader.files = [ new JPGEncoder(100).encode(bmd) ]; photoLoader.upload("id альбома"); Сделал Цитата:
Цитата:
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
if (stage.loaderInfo.parameters.viewer_id) _parameters = new ApplicationParameters(stage.loaderInfo.parameters); else _parameters = new ApplicationParameters(TEST_PARAMS); _vkontakte = Vkontakte.getInstance(); _vkontakte.applicationParameters = _parameters; _vkontakte.privateKey = "jpdkpTMeoQ"; _vkontakte.isTestMode = true; _vkontakte.setLockDelay(2000); Цитата:
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
var vk_main:Vkontakte = Vkontakte.getInstance(); var _parameters:by.typing.vkontakte.ApplicationParameters = new ApplicationParameters(stage.loaderInfo.parameters); vk_main.applicationParameters = _parameters; vk_main.privateKey = ""; vk_main.isTestMode=false; vk_main.setLockDelay(2000); //var fu:PhotoUploader = new PhotoUploader(vk_main); var fl:PhotoLoader = new PhotoLoader(vk_main); fl.addEventListener(VkontakteErrorEvent.ERROR, function(e:VkontakteErrorEvent):void{tf.text = "123";}); fl.addEventListener(by.typing.vkontakte.events.LoaderEvent.UPLOAD_COMPLETE, function(e:VkontakteErrorEvent):void{tf.text = "123";}); fl.files = [ new JPGEncoder(100).encode(bmpd) ]; fl.upload("65511528"); Добавлено через 34 секунды То есть опять не получилось. Мне нужно всего лишь составить post запрос, уже прочитано http://www.hostmake.ru/articles/php_perl/645/ Добавлено через 2 минуты В php я делал post запросы, как их сделать на as3? Добавлено через 9 минут Мне нужно самому составить post запрос целиком, вместе с заголовками, с границами (boundary). Как тут http://www.hostmake.ru/articles/php_perl/645/ Последний раз редактировалось zemozes; 19.07.2010 в 11:23. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
У меня для загрузки работает вот этот код (imageContent, serverResponse, saverURL - переменные класса, в первую записывается изображение перед началом загрузки)
private function imageForAlbumUploadStart(e:MouseEvent) { var fileContentType:String = 'image/jpeg'; var mpLoader:MultipartURLLoader = new MultipartURLLoader(); mpLoader.addEventListener(Event.COMPLETE, imageForAlbumUploaded); mpLoader.addFile(imageContent, "image.jpg", "file1", fileContentType); mpLoader.load(saverURL); } private function imageForAlbumUploaded(e:Event) { serverResponse = JSON.decode( e.currentTarget.loader.data ); trace("serverResponseDecoded: ", serverResponse.server, serverResponse.photos_list, serverResponse.hash); } Последний раз редактировалось mikhailk; 19.07.2010 в 12:52. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
mikhailk, большое спасибо. Помогло, но ответ не очень соответствует описанию, которое описано тут "Процесс загрузки файлов на сервер ВКонтакте".
Цитата из http://vkontakte.ru/page2372787 Цитата:
Цитата:
То есть раньше photos_list был "" (пустой), а теперь "5abec23d2b:x". Хотя в доке написано, что должно быть "photos_list": '2,3,4' (понятно, что цифры другие могут быть). Но у меня не цифры, а буквы с цифрами и знак двоеточие. Ваш код чуток переделал для совместимости со своим. В xml.elements(upload_url) у меня содержится http-адрес для загрузки фотографий (подчёркивание дописал для удобства, а то форум скрывает часть ссылки). Цитата:
var fileContentType:String = 'image/jpeg'; var mpLoader:MultipartURLLoader = new MultipartURLLoader(); mpLoader.addEventListener(Event.COMPLETE, imageForAlbumUploaded); mpLoader.addFile(bArray, "image.jpg", "file1", fileContentType); mpLoader.load(xml.elements("upload_url").toString()); function imageForAlbumUploaded(e:Event) { //serverResponse = JSON.decode( e.currentTarget.loader.data ); //trace("serverResponseDecoded: ", serverResponse.server, serverResponse.photos_list, serverResponse.hash); tf.text = tf.text + "\r\n e.currentTarget.loader.data=" + e.currentTarget.loader.data; } Последний раз редактировалось zemozes; 19.07.2010 в 16:21. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Попробуйте JSON, который возвращает сервер, не особо задумываясь, распарсить на параметры и скормить их photos.save (http://vkontakte.ru/pages.php?o=-1&p=photos.save).
Я свой код отлаживал почти полгода назад. Тогда ответ сервера соответствовал спецификации, но они там постоянно что-то меняют. Сам код рабочий. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|