我是钛的新手,想从我的钛应用程序中调用一个Web服务。
webService返回json响应。
我知道使用XMLRPC
调用webService但是对于json非常困惑。
到现在为止,我知道我们必须创建HTTPClient
。
var request = Titanium.Network.createHTTPClient();
request.open("POST", "http://test.com/services/json");
request.onload = function() {
var content = JSON.parse(this.responseText);//in the content i have the response data
};
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //did not understand this line
request.send();
现在问题是如果我的url(端点)有很多WebServices,那么我将给出方法名称,即要调用的WS名称。
从Titanium mobile的API文档中,函数open
即request.open
接受3个参数:
方法名称(http方法名称)
请求网址
async(boolean property)默认为true。
在上面的代码中"POST"
做什么?如果我的WS名称是system.connect
那么我将在代码中提到它?
如果WS需要参数,那么我们如何将参数发送到上面代码的webService。
我知道request.send()
可用于发送参数但是如何发送?
答案 0 :(得分:14)
要调用网络服务,您应该:
// create request
var xhr = Titanium.Network.createHTTPClient();
//set timeout
xhr.setTimeout(10000);
//Here you set the webservice address and method
xhr.open('POST', address + method);
//set enconding
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
//send request with parameters
xhr.send(JSON.stringify(args));
// function to deal with errors
xhr.onerror = function() {
};
// function to deal with response
xhr.onload = function() {
var obj = JSON.parse(this.responseText);
};
地址是您的网络服务网址。
方法是您想要调用的方法。
address + method是一个URL,在您的示例中:“http://test.com/services/json”调用的方法将命名为json。
args :是一个json对象,其变量名称应与webservice参数具有完全相同的名称。您可以像这样创建参数对象:
var args = {};
args.parameter1 = 'blabla';
args.parameter2 = 'blaaaa';