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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию URLLoader - не стартует выгрузку

Здравствуйте. Пишу себе универсальную машину для работы с различными API соц. сетей. Сейчас остановила публикация записей на стену. Проблем с выгрузкой локально нет, но вот при удалённом тесте загрузка не стартует. Привожу код и логи операций, подскажите может кто-то явно видит где я допустил ошибку, а пока сам буду рыть.
Код AS3:
package multiapi.processor {
 
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
 
	import flash.utils.ByteArray;
 
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.PixelSnapping;
	import flash.display.DisplayObject;
 
	import flash.events.Event;
 
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLRequestHeader;
	import flash.net.URLRequestMethod;
 
	import com.adobe.images.JPGEncoder;
	import com.adobe.serialization.json.JSON;
 
	import multiapi.data.MultipartData;
	import multiapi.data.GlobalData;
 
	public class Poster {
 
		public function Poster() {
			// constructor code
		}
 
		public function images($data:Object, user_id:String,options:Object,completeFunc:Function=null,failFunc:Function=null):void {
 
			GlobalData.log.add('Images');
 
			if (!options.quality) options.quality = 80;
 
			options.url = (options.url) ? ','+options.url : '';
 
			var jpg:JPGEncoder = new JPGEncoder(options.quality);
 
			var ba:ByteArray = new ByteArray();
				ba = jpg.encode( extractBmpd(options.image, 0, 0 , options.image.width, options.image.height) );
 
			var urlRequest:URLRequest = new URLRequest($data.upload_url);
				urlRequest.method = URLRequestMethod.POST;
				urlRequest.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultipartData.BOUNDARY));
 
			var urlLoader = new URLLoader();
 
			GlobalData.log.add('urlLoader');
 
				urlLoader.addEventListener(Event.COMPLETE, function(event:Event):void {
 
										   		GlobalData.log.add('upload_complete');
 
										   		var callback:Object = JSON.decode(event.target.data);
 
												GlobalData.log.add(callback);
 
          										GlobalData.api.multi.api("photos.saveWallPhoto",{server:callback.server,photo:callback.photo, hash:callback.hash}, function(data:Object):void {
																		 	GlobalData.log.add('start post');
																		 	GlobalData.log.add(data);
																		 	GlobalData.api.multi.api("wall.post",{owner_id:user_id,message:options.desc,attachments:data[0].id+options.url}, completeFunc, failFunc);
																		 }, failFunc);
										   });
				urlLoader.addEventListener(Event.OPEN, function(event:Event):void { } );
 
			var bitdata:MultipartData = new MultipartData();
				bitdata.addFile(ba, "photo");
 
				urlRequest.data = bitdata.data;
 
			GlobalData.log.add('start load');
 
				urlLoader.load(urlRequest);
 
			GlobalData.log.add('starting');
		}
 
		private function extractBmpd( ARG_object:DisplayObject, ARG_x:Number, ARG_y:Number, ARG_width:Number, ARG_height:Number):BitmapData {
			GlobalData.log.add('extractBmpd');
			var cropArea:Rectangle = new Rectangle(0, 0, ARG_width, ARG_height);
 
			var bmpd:BitmapData = new BitmapData(ARG_width, ARG_height);
 
			var croppedBitmap:Bitmap = new Bitmap(bmpd, PixelSnapping.ALWAYS, true);
 
			var cropMatrix:Matrix = new Matrix();
			cropMatrix.translate(-ARG_x, -ARG_y);
 
			bmpd.draw( ARG_object, cropMatrix, null, null, cropArea, true );
			return bmpd; 
		}
	}
}
Лог операций
Код:
posting for user > 16580191
url = http://vk.com/mind.battle
desc = текст
upload_url = http://cs307304.vkontakte.ru/upload.php?act=do_add&mid=16580191&aid=-14&gid=0&hash=1f1b790fe86d10bf6ab62fd04f6dd20f&rhash=4f6a5f8e293dbfacc8a661f06c337291&swfupload=1&api=1&wallphoto=1
aid = -14
mid = 16580191
Images
extractBmpd
urlLoader
start load
starting
__________________
return this...

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Так на остальные события подпишитесь.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 21.02.2013, 17:33
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,875
Записей в блоге: 7
Анонимные функции - первый шаг к проблеме.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Старт публикации
Код AS3:
public function post(user_id:String,options:Object,callBackOk:Function=null,callBackFail=null):void {
 
			GlobalData.log.add('posting for user > '+user_id);
			GlobalData.log.add(options);
 
			if (!callBackFail) callBackFail = onApiRequestFail;
 
			multi.api("photos.getWallUploadServer", {"uid":user_id}, function(data:Object):void { GlobalData.log.add(data); GlobalData.poster.images(data,user_id,options,callBackOk,callBackFail) } , callBackFail);
		}
Все это является флеш-контейнером который подгружает внешний свф, у которого внутри
Код AS3:
wrapper.external.post(16580191, {'desc':'текст','image':spr, 'url':'http://vk.com/mind.battle'}, postOk, postFail ); break;
где соответственно spr - мувик с изображением для публикации

Добавлено через 9 минут
Подписался, говорит
Код:
errorHandler: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
Добавлено через 15 минут
Цитата:
Сообщение от iNils Посмотреть сообщение
Анонимные функции - первый шаг к проблеме.
Использую анонимные функции для того чтобы отдавать им уникальные параметры и при асинхронном выполнению, данные в них были актуальны именно для этого обработчика. Как бы Вы поступили? Понимаю что нужно писать что-то типа реестра обработчиков но бывают внешние события без подписи (идентификатора), просто пришли данные и все, в таком случая я не знаю кто ждет на самом деле эти данные.

Добавлено через 20 минут
Код AS3:
Security.allowDomain("*");
не решил вопрос.
__________________
return this...

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Подписался, говорит
Ну вот

Цитата:
Использую анонимные функции для того чтобы отдавать им уникальные параметры и при асинхронном выполнению, данные в них были актуальны именно для этого обработчика. Как бы Вы поступили? Понимаю что нужно писать что-то типа реестра обработчиков но бывают внешние события без подписи (идентификатора), просто пришли данные и все, в таком случая я не знаю кто ждет на самом деле эти данные.
Можно Poster новый создавать каждый раз. И колбеки пихать в приватные переменные.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 21.02.2013, 18:00
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 6  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
вот сижу и думаю.. может это у меня уже мозги поплавились.. ведь использую конструкцию
social network -> iframe -> my flash conteiner -> content
и просто напросто флеш запущенное не из домена (к примеру вконтакте) не сможет выгрузить картинку... Извините за возможно нелепые рассуждения день мозгового штурма был.

Добавлено через 2 минуты
Цитата:
Сообщение от GBee Посмотреть сообщение
Можно Poster новый создавать каждый раз. И колбеки пихать в приватные переменные.
Спасибо за наводку, так даже более оптимальней нежели хранить статически постер
__________________
return this...

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,620
Записей в блоге: 4
возможно дело банально в файле crossdomain.xml. Прописаны ли там домены *.userapi.com и userapi.com?
Картинки ведь контактовские теперь там хранятся

Старый 21.02.2013, 19:58
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 8  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
возможно дело банально в файле crossdomain.xml. Прописаны ли там домены *.userapi.com и userapi.com?
Картинки ведь контактовские теперь там хранятся
На своем сервере?

Получается так, что у меня iframe. У меня флеш генерит картинку и потом пытается выгрузить на сервер и в этот момент не проходит по безопасности. Я могу передать из флеша в джаваскрипт картинку чтобы тот выгрузил?
__________________
return this...

Старый 21.02.2013, 20:06
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,620
Записей в блоге: 4
Цитата:
На своем сервере?
ну само собой

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
ну само собой
у меня вообще стоит * в кросс домене.

Добавлено через 5 минут
Цитата:
Сообщение от caseyryan Посмотреть сообщение
ну само собой
у Вас ифреймовское приложение выгружает из флеша картинки на сервера вк?
__________________
return this...

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

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

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


 


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


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