Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.06.2010, 16:53
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 1  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
По умолчанию Загрузка изображения на стену пользователя

Шаг 1:
Получаю адрес сервера (метод wall.getPhotoUploadServer)
http://cs857.vkontakte.ru/upload.php...71&swfupload=1
всё ок.



Шаг 2:
формирую POST запрос на сервер:
Код AS3:
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.
Старый 08.06.2010, 17:00
petri вне форума Посмотреть профиль Отправить личное сообщение для petri Найти все сообщения от petri
  № 2  
Ответить с цитированием
petri
 
Аватар для petri

Регистрация: Dec 2009
Сообщений: 60
Ну так у тебя же photo пустой, что ты отправляешь ?

Старый 08.06.2010, 17:29
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 3  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Вовсе нет,
не пуст он!
проверял.

поменял
Код AS3:
var img_to_post:ByteArray = new JPGEncoder(85).encode(pic);
на
Код AS3:
var img_to_post:ByteArray = PNGEncoder.encode(pic);
не работает

размер бинарной картинки при передаче на сервер: 101903 байт


Последний раз редактировалось RAlfDog; 08.06.2010 в 18:00.
Старый 09.06.2010, 10:53
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Значит неправильно составлен запрос при аплоаде. Как минимум он должен быть multipart/form-data.

Старый 09.06.2010, 13:15
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 5  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Спасибо etc!
Нашел тему по моему вопросу - http://blog.inspirit.ru/?p=139

Решение найдено!
Код AS3:
 
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.
Старый 27.06.2010, 01:41
Ralph_DiMarko вне форума Посмотреть профиль Отправить личное сообщение для Ralph_DiMarko Найти все сообщения от Ralph_DiMarko
  № 6  
Ответить с цитированием
Ralph_DiMarko
 
Аватар для Ralph_DiMarko

Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
Подскажите почему у меня ничего не заходит в функцию sendPicToServerHandler?
Все нормально именно до этого момента..

Старый 28.06.2010, 21:41
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 7  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от Ralph_DiMarko Посмотреть сообщение
Подскажите почему у меня ничего не заходит в функцию sendPicToServerHandler?
Все нормально именно до этого момента..
Код свой приложите, пожалуйста!

Старый 16.08.2010, 18:23
Garrat вне форума Посмотреть профиль Отправить личное сообщение для Garrat Найти все сообщения от Garrat
  № 8  
Ответить с цитированием
Garrat

Регистрация: Jul 2010
Сообщений: 2
По умолчанию ничего не понимаю...

Сделал сперва первым способом, получил такой же ответ (без поля photo).
Переделал, с использованием MultipartURLLoader'а. Тот же результат.
Никак не могу понять, в чем проблема.

P.s. Вроде бы заработало, после долгого копания в моем ByteArray. Похоже, проблема была именно в нем.


Последний раз редактировалось Garrat; 17.08.2010 в 10:18.
Старый 19.08.2010, 14:22
O.K. вне форума Посмотреть профиль Отправить личное сообщение для O.K. Найти все сообщения от O.K.
  № 9  
Ответить с цитированием
O.K.

Регистрация: Apr 2007
Адрес: Новосибирск
Сообщений: 98
Делал сразу по второму, для загрузки в альбом всё норм - на стену пустое поле photo...

Старый 25.08.2010, 02:21
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 10  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от O.K. Посмотреть сообщение
Делал сразу по второму, для загрузки в альбом всё норм - на стену пустое поле photo...
Всё может быть в названии файла и названии поля, делайте, обязательно, вот так:
Код AS3:
mpLoader.addFile(img_to_post, "photo.png", "photo");
т.е. название файла (photo.png) должно соответствовать названию поля (photo)

Тоже долго мучался, не понимал в чём причина, сделал так и вдруг всё заработало! В чём связь, до сих пор не понял?!

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.