|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Загрузка изображения на стену пользователя
Шаг 1:
Получаю адрес сервера (метод wall.getPhotoUploadServer) http://cs857.vkontakte.ru/upload.php...71&swfupload=1 всё ок. Шаг 2: формирую POST запрос на сервер: static private function sendPicToServer(pic:BitmapData, url:String) { var sender:URLRequest = new URLRequest(url); var vars:URLVariables = new URLVariables(); var img_to_post:ByteArray = new JPGEncoder(85).encode(pic); vars.photo = img_to_post; sender.data = vars; sender.method = URLRequestMethod.POST; urlLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.addEventListener(Event.COMPLETE, sendPicToServerHandler); try { urlLoader.load(sender); } catch (e:Error) { trace(e); } } Получаю ответ от сервера Вконтакте, в котором поле photo пустое: {"mid": "85662523", "gid": "0", "server": "857", "photo": "", "hash": "dfc0d4bf10b93a3cb993a0a59e3b7c5a"} Шаг 3: Отправляю запрос wall.savePost, кладу в него всё что нужно, в ответ приходит: <error> <error_code>129</error_code> <error_msg>Invalid photo</error_msg> <request_params list="true"> <param> <key>message</key> <value>Приглашение</value> </param> <param> <key>v</key> <value>2.0</value> </param> <param> <key>sig</key> <value>8b9cf790a303883cbb2edfd5023b0df1</value> </param> <param> <key>api_id</key> <value>1886535</value> </param> <param> <key>hash</key> <value>dfc0d4bf10b93a3cb993a0a59e3b7c5a</value> </param> <param> <key>method</key> <value>wall.savePost</value> </param> <param> <key>wall_id</key> <value>33099162</value> </param> <param> <key>server</key> <value>857</value> </param> <param> <key>test_mode</key> <value>1</value> </param> </request_params> </error> В чём проблема не пойму??? Последний раз редактировалось RAlfDog; 08.06.2010 в 17:01. |
|
|||||
Регистрация: Dec 2009
Сообщений: 60
|
Ну так у тебя же photo пустой, что ты отправляешь ?
|
|
|||||
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Вовсе нет,
не пуст он! проверял. поменял на не работает размер бинарной картинки при передаче на сервер: 101903 байт Последний раз редактировалось RAlfDog; 08.06.2010 в 18:00. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Значит неправильно составлен запрос при аплоаде. Как минимум он должен быть multipart/form-data.
|
|
|||||
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Спасибо etc!
Нашел тему по моему вопросу - http://blog.inspirit.ru/?p=139 Решение найдено! import MultipartURLLoader; import JSON; static private var mpLoader:MultipartURLLoader; static private function sendPicToServer(pic:BitmapData, url:String) { var img_to_post:ByteArray = PNGEncoder.encode(pic); mpLoader = new MultipartURLLoader(); mpLoader.addFile(img_to_post, "photo.png", "photo"); try { mpLoader.addEventListener(Event.COMPLETE, sendPicToServerHandler); mpLoader.load(url); } catch (e:Error) { trace(e); } } static private function sendPicToServerHandler(ev:Event) { var answer:String = mpLoader.loader.data; var data:Object = JSON.decode(answer); if (data.error) { // ошибка }else{ // картинка загружена } } Последний раз редактировалось RAlfDog; 09.06.2010 в 13:21. |
|
|||||
Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
|
Подскажите почему у меня ничего не заходит в функцию sendPicToServerHandler?
Все нормально именно до этого момента.. |
|
|||||
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Код свой приложите, пожалуйста!
|
|
|||||
Регистрация: Jul 2010
Сообщений: 2
|
ничего не понимаю...
Сделал сперва первым способом, получил такой же ответ (без поля photo).
Переделал, с использованием MultipartURLLoader'а. Тот же результат. Никак не могу понять, в чем проблема. P.s. Вроде бы заработало, после долгого копания в моем ByteArray. Похоже, проблема была именно в нем. Последний раз редактировалось Garrat; 17.08.2010 в 10:18. |
|
|||||
Регистрация: Apr 2007
Адрес: Новосибирск
Сообщений: 98
|
Делал сразу по второму, для загрузки в альбом всё норм - на стену пустое поле photo...
|
|
|||||
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Цитата:
т.е. название файла (photo.png) должно соответствовать названию поля (photo) Тоже долго мучался, не понимал в чём причина, сделал так и вдруг всё заработало! В чём связь, до сих пор не понял?! |
Часовой пояс GMT +4, время: 08:14. |
|
« Предыдущая тема | Следующая тема » |
|
|