TiHTTPClient:(java.net.ProtocolException):超出内容长度限制439个字节

时间:2016-06-08 20:06:01

标签: android appcelerator-titanium androidhttpclient

在我的Android应用程序版本中使用HTTPClient提交POST请求进行用户身份验证时,我收到错误消息:

TiHTTPClient: (java.net.ProtocolException): exceeded content-length limit of 439 bytes

这是请求代码:

var xhr = Titanium.Network.createHTTPClient({
        onload : function(e) {
            try {
                var json_result = JSON.parse(this.responseText);

                Ti.API.warn("json_result: " + JSON.stringify(json_result));
                if (json_result.Status == 200) {
                    Ti.App.Properties.setBool('loggedIn', true);
                    Ti.App.Properties.removeProperty("catalgSyncDate");
                    Ti.App.Properties.setString("Token", json_result.Model.Token);
                    Ti.App.Properties.setObject("Model", json_result.Model);
                    Ti.App.Properties.setString("authenticationMessage", this.responseText);
                    Ti.App.Properties.setObject("usrobj", user);
                    getUserProfile(json_result.Model.UserId);
                    getTrainingAcquis(json_result.Model.UserId);
                    CheckAuthentication();
                    //Alloy.createController('monCompte').getView().open();
                    //$.loginWin.close();
                } else {
                    $.actInd.hide();
                    $.actIndContainer.hide();
                    showMessage('Echec de connexion', "Nom d'utilisateur ou mot de passe incorrect. Veuillez réessayer svp.");
                }

            } catch(e) {
                Ti.API.error("Login : WS exists error : " + JSON.stringify(e));
                $.actInd.hide();
                $.actIndContainer.hide();
                showMessage("Erreur de communication avec le serveur", "Erreur inconnue à survenue durant la communication avec le serveur. Veuillez réessayer svp. Si l'erreur persiste merci de contacter le support.");
            }

        },
        onerror : function(e) {
            //Ti.API.error("Login : Erreur de connexion :" + JSON.stringify(e));
            $.actInd.hide();
            $.actIndContainer.hide();
            showMessage("Erreur de connexion", "Veuillez verifier votre connexion et réessayer svp.");
        },
        timeout : 10000 // in milliseconds
    });
    xhr.open("POST", Alloy.Globals.ws.url.login);
    xhr.setRequestHeader('Authorization-Token', AuthorizationToken);
    var device = Titanium.Platform.manufacturer + "," + Titanium.Platform.osname;
    // + "," + Titanium.Platform.version + " " + Titanium.Platform.ostype + " " + Titanium.Platform.architecture + " " + Titanium.Platform.name;
    var params = '{"UserName" : "' + user._userName + '","Password" : "' + user._userPassword + '","IP":"", "Device": "' + device + '", "Mobile" : true, "RememberMe" : true}';
    Ti.API.error("PARAMS : " + params);
    xhr.setRequestHeader('Content-Type', "application/json");
    xhr.setRequestHeader("Content-length", params.length);
    xhr.send(params);

我找到的几个解决方案是删除类似问题的this answer中的setContentLength,但是我没有找到如此所述的如何刷新缓冲区(钛HTTPClient中没有这样的方法) API) 而且我不知道这对我的问题是否真的是一个很好的解决方案。所以请任何人告诉我它可能是什么。

0 个答案:

没有答案