Appcelerator Titanium:createHTTPClient 因在 GUI REST 客户端中工作的相同数据而失败
Appcelerator Titanium: createHTTPClient fails with same data that works in GUI REST client
REST 客户端 returns“200 OK”- 很好!
createHTTPClient returns "HTTP error" 使用完全相同的数据。当我删除 payload 时,我得到了响应,当我在 client.send(payload) 中添加 payload 时,我得到了错误。我确实需要为将来的请求传递有效负载。
var payload = {
username: 'test',
password: 'test'
};
var url = "https://MYWEBSITE.com/rest_login/user/token.json";
var client = Ti.Network.createHTTPClient({
// function called when the response data is available
onload : function(e) {
Ti.API.info("Received text: " + this.responseText);
alert('success');
},
// function called when an error occurs, including a timeout
onerror : function(e) {
Ti.API.error(e.error);
alert('error');
},
timeout : 5000 // in milliseconds
});
// Prepare the connection.
client.open("POST", url);
client.setRequestHeader('Content-Type', 'application/json');
// Send the request.
client.send(payload);
试试这个
var xhr = Ti.Network.createHTTPClient();
xhr.onload = function(e) {
var myObjectString = JSON.parse(this.responseText);
alert(myObjectString.token);
Ti.API.info("Received text: " + myObjectString.token);
};
xhr.onerror = function(e) {
Ti.API.error(e.error);
alert('error');
};
xhr.open('POST', 'https://my.cgps.org/rest_login/user/token.json');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send();
希望这对您有所帮助。我认为您在 API 调用中没有正确处理发送参数。
你没有显示你得到了什么样的错误,但我想问题是你试图发送一个对象,而有效负载应该是文本(你的代码中有 client.setRequestHeader('Content-Type', 'application/json');
)。试试这个:
// Send the request.
client.send(JSON.stringify(payload));
您只需要将最后一行更改为:
client.send( JSON.stringify(payload) );
原因是,由于您将 content-type 设置为应用程序 json,因此您需要将字典 object 的输入数据字符串化,以便服务器可以根据 header设置.
REST 客户端 returns“200 OK”- 很好!
createHTTPClient returns "HTTP error" 使用完全相同的数据。当我删除 payload 时,我得到了响应,当我在 client.send(payload) 中添加 payload 时,我得到了错误。我确实需要为将来的请求传递有效负载。
var payload = {
username: 'test',
password: 'test'
};
var url = "https://MYWEBSITE.com/rest_login/user/token.json";
var client = Ti.Network.createHTTPClient({
// function called when the response data is available
onload : function(e) {
Ti.API.info("Received text: " + this.responseText);
alert('success');
},
// function called when an error occurs, including a timeout
onerror : function(e) {
Ti.API.error(e.error);
alert('error');
},
timeout : 5000 // in milliseconds
});
// Prepare the connection.
client.open("POST", url);
client.setRequestHeader('Content-Type', 'application/json');
// Send the request.
client.send(payload);
试试这个
var xhr = Ti.Network.createHTTPClient();
xhr.onload = function(e) {
var myObjectString = JSON.parse(this.responseText);
alert(myObjectString.token);
Ti.API.info("Received text: " + myObjectString.token);
};
xhr.onerror = function(e) {
Ti.API.error(e.error);
alert('error');
};
xhr.open('POST', 'https://my.cgps.org/rest_login/user/token.json');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send();
希望这对您有所帮助。我认为您在 API 调用中没有正确处理发送参数。
你没有显示你得到了什么样的错误,但我想问题是你试图发送一个对象,而有效负载应该是文本(你的代码中有 client.setRequestHeader('Content-Type', 'application/json');
)。试试这个:
// Send the request.
client.send(JSON.stringify(payload));
您只需要将最后一行更改为:
client.send( JSON.stringify(payload) );
原因是,由于您将 content-type 设置为应用程序 json,因此您需要将字典 object 的输入数据字符串化,以便服务器可以根据 header设置.