Basecamp API - Flex URLLoader status 200, но никаких действий - PullRequest
0 голосов
/ 21 февраля 2012

Я разработал 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()));
    }
}
}
...