Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Sybase ASA, ASE, IQ Новый топик    Ответить
 Sybase SA 12.0.1: Как передать в web-services параметр типа json  [new]
Stalker4
Member

Откуда:
Сообщений: 206
Hi Al,

Sybase SA 12.0.1

Есть гугловская форма, пользователь на ней заполняет поля и жмет кнопку, по которой формируется json-объект и дергается мой сервис в SA 12.0.1 которому по идее этот json-объект и надо передать.

Вопрос: Умеет ли вообще SA 12.0.1 принимать данные (параметры) в веб-сервисы в виде json-объекта ?
Если да, то покажите пожалуйста пример такого веб-сервиса, как его надо создать.
28 фев 17, 17:20    [20251731]     Ответить | Цитировать Сообщить модератору
 Re: Sybase SA 12.0.1: Как передать в web-services параметр типа json  [new]
Stalker4
Member

Откуда:
Сообщений: 206
Немного дополню свой вопрос.

Это код JS-метода, который дергает web-сервис в Sybase SA 12.0.1
function postToURL_1(formObject, URL) {
  var result = {};
  try {
    var options =
        { "method": "post",
         "contentType": "application/json",
         "muteHttpExceptions": true,
         "payload": JSON.stringify([ formObject.text, +formObject.number,
formObject.string, formObject.inputDate, formObject.myFile ])
        };
    result.status = true;
    result.message = 'Запрос выполнился';
    var response = UrlFetchApp.fetch(URL, options);
    result.itog = JSON.parse(response);
  }
  catch (err) {
    result.status = false;
    result.message = 'Запрос не выполнился';
    result.err = err;
  }
  return result;
}

В параметр URL передается ссылка на web-сервис http://xxx.xxx.xxx.xxx:yyyy/TestBase/wsTest1
formObject это гугловская форма.

Если тут есть знатоки javaScript, посмотрите пожалуйста, правильно ли написан метод.

Это код со стороны БД:
CREATE SERVICE "wsTest1" TYPE 'JSON' AUTHORIZATION OFF USER "MyUser" AS call dba.WebTest1(:cXML);

CREATE PROCEDURE "DBA"."WebTest1"(in cXML long varchar)
RESULT( cReturn long varchar ) 
BEGIN	
 select cXML;
END
go


По идее в параметр cXML должен прийти json-объект, но почему то не приходит. То есть вызов web-сервиса и последующий вызов dba.WebTest1 происходит, но в cXML почему то приходит пустое значение (NULL).
1 мар 17, 13:49    [20254052]     Ответить | Цитировать Сообщить модератору
 Re: Sybase SA 12.0.1: Как передать в web-services параметр типа json  [new]
Stalker4
Member

Откуда:
Сообщений: 206
Так как никто не ответил, отвечу сам себе (помогли на форуме sqlanywhere-forum.sap.com).

Так как вызов из JS веб-сервиса происходит через post, то в параметр cXML ничего не приходит, а вылавливать переданные данные надо внутри SP с помощью функции HTTP_BODY().
7 мар 17, 16:05    [20271670]     Ответить | Цитировать Сообщить модератору
Все форумы / Sybase ASA, ASE, IQ Ответить