Я разработал Adobe Air Client для Basecamp.В последнее время мы решили перевести нашего клиента из ActionScript в Adobe Flex.Когда мы переместили наш код в flex, у нас возникла проблема.
Клиент может загружать данные из любых методов в API.Но проблема возникает при отправке данных с помощью API.
Например, - клиент может загрузить список отслеживания времени.- но не могу создать временную метку для элемента todo.
Я использовал URLLoader для отправки / загрузки данных.Я не получаю никаких ошибок или что-то.Я запускаю код, запрос достигает API, и когда я читаю ответ, я вижу
- Статус Http: 200
- Данные загрузчика: данные XML, которые отправляет наш клиентAPI для создания временной метки.
Я проверил все заголовки, данные запроса, URL-адрес запроса и т. Д. *
Есть ли кто-нибудь еще, кто имел такую же проблемурешение?
Вот мой запрос Класс:
package com.alafortanfoni.pmToolClient.service
{
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
public class BCRequest
{
private var request:URLRequest;
public function BCRequest(url:String, headers:Headers, method:String=URLRequestMethod.GET, data:XML = null)
{
request = new URLRequest();
setHeaders(headers);
setMethod(method);
setURL(url);
setData(data)
}
private function setData(data:XML):void
{
if(data != null)
{
request.data = data;
}
}
private function setURL(url:String):void
{
request.url = url;
}
private function setHeaders(headers:Headers):void
{
request.requestHeaders.push(headers.getAuthorizationHeader());
request.requestHeaders.push(headers.getAcceptHeader());
request.contentType = 'application/xml';
}
private function setMethod(method:String):void
{
request.method = method;
}
public function getRequestObject():URLRequest
{
return request;
}
}
}
А это класс обслуживания:
package com.alafortanfoni.pmToolClient.service
{
import com.alafortanfoni.pmToolClient.service.parser.IParser;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
public class BCService extends EventDispatcher implements IService
{
public static var userName:String;
public static var userPass:String;
private var request:BCRequest;
private var parser:IParser;
private var loader:URLLoader;
public function BCService(request:BCRequest, parser:IParser)
{
this.request = request;
this.parser = parser;
}
public function execute():void
{
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadCompleteHandler);
loader.addEventListener(Event.INIT, loadCompleteHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler);
loader.addEventListener(ProgressEvent.PROGRESS, onProgress);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus);
loader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS, onStatus);
loader.load(request.getRequestObject());
}
protected function onStatus(event:HTTPStatusEvent):void
{
}
private function onProgress(event:ProgressEvent):void
{
trace(event.bytesLoaded, event.bytesTotal);
}
public function cancel():void
{
loader.removeEventListener(Event.COMPLETE, loadCompleteHandler);
loader.removeEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler);
loader.close();
loader = null;
}
protected function IOErrorHandler(event:IOErrorEvent):void
{
dispatchEvent(new BCServiceEvent(BCServiceEvent.FAIL, 'Service Path Not Found'));
}
protected function loadCompleteHandler(event:Event):void
{
var xml:XML = new XML(loader.data);
parser.parse(xml);
dispatchEvent(new BCServiceEvent(BCServiceEvent.COMPLETE, parser.getData()));
}
}
}