Как вызвать веб-сервис в титане с помощью javascript

Я новичок в титане и хочу вызвать веб-службу из своего приложения титана. WebService возвращает ответ json. Поскольку мне известно о вызове веб-службы с использованием XMLRPC, но я очень запутался в 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-адреса (конечных точек) много веб-сервисов, поэтому я дам имя метода, то есть имя WS, которое нужно вызвать.

Из документации API мобильного телефона Titanium функция open т.е. request.open принимает 3 параметра:

  1. имя метода (имя метода http)

  2. URL-адрес запроса

  3. async (логическое свойство) по умолчанию true.

В приведенном выше коде что там делает "POST"?? и если мое имя WS system.connect, то где я буду упоминать это в коде?

А что, если WS нужен параметр, так как мы можем отправить параметр в веб-службу из приведенного выше кода.

Я знаю, что request.send() можно использовать для отправки параметра, но как??


person Ajeet Pratap Maurya    schedule 03.01.2012    source источник
comment
Не могли бы вы дать больше информации о службах, которые вы пытаетесь вызвать? Конечные точки REST или SOAP?   -  person tomconte    schedule 06.01.2012


Ответы (1)


Чтобы вызвать веб-сервис, вы должны:

    // 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 – это URL вашего веб-сервиса.

method – это метод, который вы хотите вызвать.

address+method — это URL-адрес, в вашем примере: «http://test.com/services/json» вызываемый метод будет называться json.

args: это объект json, имена переменных которого должны совпадать с именами параметров веб-сервиса. Вы можете создать объект параметров следующим образом:

var args = {};
args.parameter1 = 'blabla';
args.parameter2 = 'blaaaa';
person Canastro    schedule 03.01.2012
comment
что вы подразумеваете под адресом + методом.. предположим, мой адрес alpha.com/services/json и мой метод system.connect, поэтому, по вашему мнению, это будет alpha.com/services/json + system. подключиться или alpha.com/services/json/system.connect ?? - person Ajeet Pratap Maurya; 03.01.2012
comment
Когда у меня был знак +, я объединял две строки. Один с URL-адресом конечной точки веб-сервиса alpha.com/services/json, а другой с методом system.connect. Вы можете сделать это или просто написать полный адрес: alpha.com/services/json/system.connect. Вероятно, вам следует проверить, правильно ли работает ваш веб-сервис, вы можете использовать fiddler2 для его проверки. - person Canastro; 03.01.2012
comment
хорошо, ваш код натолкнул меня на идею, и, наконец, мне удалось сделать его более удобным. Я отмечу ваш ответ правильным.. - person Ajeet Pratap Maurya; 30.05.2012
comment
xhr.отправить(); пропал, отсутствует - person Jay Gajjar; 10.05.2016