Здравствуйте. Пишу себе универсальную машину для работы с различными 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;
}
}
}