从sdk 1.7.5到1.8.0.1的不同Titanium HTTPClient行为

时间:2012-01-12 09:27:16

标签: sdk httpclient titanium

我在sdk 1.7.5和1.8.0.1

中发现了Titanium HTTPClient的两种不同行为

这是我的完整代码:

function Synchronizer () {
//server calls
var callStack = [{
            url: 'http://url1',
            name: 'foo1'
            },
            {
            url: 'http://url2',
            name: 'foo2'
            },
            {
            url: 'http://url3',
            name: 'foo3'
            },
            {
            url: 'http://url4',
            name: 'foo4'
            }
    ];

//processing data
var dataStack = new Array();

//call stack pointer
var stackPointer = 0;

//HTTPClient
var httpClient = Titanium.Network.createHTTPClient({
        onerror:function(e){
            UIManager.SynchronizeUI.onError();
        },
        ondatastream:function(e)    {   
            UIManager.SynchronizeUI.setProgressBarValue(stackPointer);  
        }
    });

//....

//DataConsumer
var DataConsumer = new DataConsumer();

//Method for synchronization
this.synchronizeAll = function (usr, pwd) {

    if(!Ti.Network.online){
      Ti.API.info('Not connected to the internet');
      return;
    }

    Ti.API.info('Avvia syncro');
    stackPointer = 0;

    //Autentication call
    httpClient.open('POST', 'http://url/login');
    httpClient.onload = function() {
        // If authenticated
        if(this.responseText.trim() == ('OK,' + usr)) {
            Ti.API.info('Login successful');
            consumeCallStack();
        }
        //else
        else {
            //...               
        }


    }
    httpClient.send({username: usr, password: pwd, ajaxlogin: 'true'});
    Ti.API.info('Calling login..');
}

/*
 * stack consumer
 */
function consumeCallStack() {

    Ti.API.info('Execute call ' + stackPointer);

    httpClient.open('GET', callStack[stackPointer].url);

    httpClient.onload = function(){
            alert(httpClient.responseText);
            //data
            var data = JSON.parse(this.responseText);
            Ti.API.info('Retrieved data for ' + callStack[stackPointer].name);
            //..
        }
    httpClient.send(); 
}

HTTPClient检索数据,不涉及on error函数。 问题是,经过身份验证后,HTTPClient第二次调用获得了我想要的JSON(如果使用1.7.5运行),同时获得与1.8.0.1第一次调用相同的成功登录页面。可能是cookie未启用的问题?非常感谢你!

1 个答案:

答案 0 :(得分:0)

使用发行说明查看哪些错误修复与您的问题相关: