Basecamp API - Flex URLLoader状态200但没有操作

时间:2012-02-21 12:59:54

标签: actionscript-3 flex urlloader basecamp

我为Basecamp开发了一个adobe air客户端。最近,我们决定将客户从actionscript air转移到Adobe Flex。 当我们将代码移动到flex时,我们遇到了问题。

客户端可以从API中的任何方法加载数据。 但是当它使用API​​发送数据时会出现问题。

例如, - 客户端可以加载时间跟踪列表。 - 但无法为待办事项创建时间轨道。

我使用URLLoader发送/加载数据。 我没有任何错误或什么。我运行代码,请求到达api,当我读到响应时,我看到了

  • Http状态:200
  • 加载程序数据:客户端发送给API以创建时间跟踪的xml数据。

我检查了所有标题,请求数据,请求网址等...

还有其他人有同样的问题和解决方案吗?

这是我的请求类:

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()));
    }
}
}

0 个答案:

没有答案