Titanium Tianium POST表单参数在使用7.2.0.GA SDK的Android上不起作用

Titanium Tianium POST表单参数在使用7.2.0.GA SDK的Android上不起作用,titanium,appcelerator,titanium-alloy,titanium-android,Titanium,Appcelerator,Titanium Alloy,Titanium Android,出于某种奇怪的原因,以下代码在Android上无法正常工作。在iOS上,这段代码仍然有效,但由于某种原因,在Android设备上,它看起来不再将参数作为表单参数发送到服务器。在钛的早期版本(6.0.2.GA)中,它工作正常。现在我正在使用7.2.0.GA SDK。有人知道是什么原因导致此代码在升级后不再工作吗 var loginModel = { username: 'blabla', password: 'password' }; xhr.open("POST", 'http:

出于某种奇怪的原因,以下代码在Android上无法正常工作。在iOS上,这段代码仍然有效,但由于某种原因,在Android设备上,它看起来不再将参数作为表单参数发送到服务器。在钛的早期版本(6.0.2.GA)中,它工作正常。现在我正在使用7.2.0.GA SDK。有人知道是什么原因导致此代码在升级后不再工作吗

var loginModel = {
    username: 'blabla',
    password: 'password'
};
xhr.open("POST", 'http://someurl');
xhr.send(loginModel);

我必须测试的最低SDK是7.3.1.GA,代码如下:

var loginModel = {
    username: 'blabla',
    password: 'password'
};

var xhr = Ti.Network.createHTTPClient({
    onload: function(e) {
        Ti.API.info("Received text: " + this.responseText);
    },
    onerror: function(e) {
        Ti.API.debug(e.error);
    },
    timeout: 5000
});
xhr.open("POST", 'https://httpbin.org/post');
xhr.send(loginModel);
因此:

[INFO]  "args": {},
[INFO]  "data": "",
[INFO]  "files": {},
[INFO]  "form": {
[INFO]  "password": "password",
[INFO]  "username": "blabla"
[INFO]  },
[INFO]  "headers": {
[INFO]  "Accept-Encoding": "identity",
[INFO]  "Content-Length": "33",
[INFO]  "Content-Type": "application/x-www-form-urlencoded",
[INFO]  "Host": "httpbin.org",
[INFO]  "User-Agent": "Appcelerator Titanium/7.3.1 ()",
[INFO]  "X-Requested-With": "XMLHttpRequest",
[INFO]  "X-Titanium-Id": ""
[INFO]  },
[INFO]  "json": null,
[INFO]  "origin": "",
[INFO]  "url": "https://httpbin.org/post"
[INFO]  }

发送正确的结果也是如此。您可以在SDK中尝试此代码或尝试更新(7.2.0从2018年6月开始)

我必须测试的最低SDK是7.3.1.GA,此代码:

var loginModel = {
    username: 'blabla',
    password: 'password'
};

var xhr = Ti.Network.createHTTPClient({
    onload: function(e) {
        Ti.API.info("Received text: " + this.responseText);
    },
    onerror: function(e) {
        Ti.API.debug(e.error);
    },
    timeout: 5000
});
xhr.open("POST", 'https://httpbin.org/post');
xhr.send(loginModel);
因此:

[INFO]  "args": {},
[INFO]  "data": "",
[INFO]  "files": {},
[INFO]  "form": {
[INFO]  "password": "password",
[INFO]  "username": "blabla"
[INFO]  },
[INFO]  "headers": {
[INFO]  "Accept-Encoding": "identity",
[INFO]  "Content-Length": "33",
[INFO]  "Content-Type": "application/x-www-form-urlencoded",
[INFO]  "Host": "httpbin.org",
[INFO]  "User-Agent": "Appcelerator Titanium/7.3.1 ()",
[INFO]  "X-Requested-With": "XMLHttpRequest",
[INFO]  "X-Titanium-Id": ""
[INFO]  },
[INFO]  "json": null,
[INFO]  "origin": "",
[INFO]  "url": "https://httpbin.org/post"
[INFO]  }

发送正确的结果也是如此。您可以使用SDK尝试此代码或尝试更新(7.2.0从2018年6月开始)

如果我通过httpbin.org进行测试,我确实会得到相同的结果,但由于某些原因,如果我将其指向真实环境,则表单参数和/或正文不可用。我在Tomcat应用服务器前面使用NGINX代理。如果我直接将请求发送到tomcat服务器,它会工作,但通过代理它不会。我升级到了7.5.3钛合金SDK,结果仍然一样。我真的不明白为什么它不再工作了。如果我通过httpbin.org测试它,我确实会得到相同的结果,但出于某种原因,如果我将它指向一个真实的环境,那么表单参数和/或正文就不可用了。我在Tomcat应用服务器前面使用NGINX代理。如果我直接将请求发送到tomcat服务器,它会工作,但通过代理它不会。我升级到了7.5.3钛合金SDK,结果仍然一样。我真的不明白为什么它不再起作用了。