forum.bitel.ru
http://forum.bitel.ru/

[6.2] Метод contractTariffList в ContractTariffService
http://forum.bitel.ru/viewtopic.php?f=19&t=11728
Страница 1 из 1

Автор:  spectrum [ 25 июн 2016, 06:15 ]
Заголовок сообщения:  [6.2] Метод contractTariffList в ContractTariffService

Пытаюсь применить метод contractTariffList в ContractTariffService через json. Выдает:
Код:
{
    "exception": "java.lang.IllegalArgumentException",
    "data": {},
    "tag": null,
    "message": null,
    "status": "error"
}

В логах сервера:
Код:
06-25/03:11:44 ERROR [http-bio-0.0.0.0-8080-exec-2] JsonWsHandler -
java.lang.reflect.InvocationTargetException
        at ru.bitel.bgbilling.kernel.container.service.server.ServiceInfo.invoke(ServiceInfo.java:118)
        at ru.bitel.bgbilling.kernel.container.ws.server.JsonWsHandler.handle(JsonWsHandler.java:317)
        at bitel.billing.server.Executer.doPost(SourceFile:158)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at ru.bitel.bgbilling.kernel.container.service.server.ServiceInfo.invoke(ServiceInfo.java:101)
        ... 21 more


Аналогично с методом contractTariffEntryList

Когда использую метод contractTariffGroupList все проходит без ошибок.
Код:
{
    "exception": null,
    "data": {"return": [{
        "tariffGroupId": 1,
        "contractId": 1111111,
        "dateTo": null,
        "comment": "",
        "id": 5,
        "dateFrom": "2015-08-30T00:00:00+03:00"
    }]},
    "tag": null,
    "message": "",
    "status": "ok"
}


Но мне нужны вышеописанные методы.

Автор:  dimOn [ 26 июн 2016, 19:55 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Как-то не так вызываете

Автор:  spectrum [ 27 июн 2016, 00:51 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Да вроде все верно вызываю.

Отправляю json-запрос post-ом на
https://server/bgbilling/executer/json/ ... iffService

json-запрос:
Код:
{"method" : "contractTariffList", "user" :{ "user" : "username", "pswd" : "password" }, "params" : { "contractId": "1" } }


Получаю:
Код:
{"status":"error","exception":"java.lang.IllegalArgumentException","message":null,"tag":null,"data":{}}


Если отправить запрос на метод contractTariffGroupList, то все проходит нормально:
Код:
{"method" : "contractTariffGroupList", "user" :{ "user" : "username", "pswd" : "password" }, "params" : { "contractId": "1" } }

Код:
{"status":"ok","exception":null,"message":"","tag":null,"data":{"return":[{"id":8,"contractId":1,"tariffGroupId":1,"dateFrom":"2015-08-30T00:00:00+03:00","dateTo":null,"comment":""}]}}

Автор:  Artur [ 27 июн 2016, 13:23 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Посмотрите документацию к этому веб-сервису (https://bgbilling.ru/v6.2/javadoc/ru/bi ... e-int-int-).
У данного метода более одного аргумента.

Автор:  spectrum [ 27 июн 2016, 14:16 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

А подскажите, что значат аргументы entityMid и entityId и как их получить?

Автор:  Artur [ 27 июн 2016, 14:34 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Эти два поля служат для определения кода модуля и сущности модуля, к которой привязывается тариф. Сущности разные. Например, для модуля phone это поинты (можно на поинты навешивать абонплаты), для dialup - логины. Если вам нужен просто список тарифов, привязанных к договору (читай к ядру), то передайте туда -1

Автор:  spectrum [ 27 июн 2016, 14:56 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Отправляю запрос:
Код:
{"method" : "contractTariffList", "user" :{ "user" : "username", "pswd" : "password" }, "params" : { "contractId": "1", "entityMid" : "1", "entityId" : "-1"  } }


Номер модуля Inet - "1"
На абоненте висят активные тарифы.
но выдает следующее:
Код:
{"status":"ok","exception":null,"message":"","tag":null,"data":{"return":[]}}

Автор:  skn [ 27 июн 2016, 15:02 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

не все параметры указаны

Код:
public List<ContractTariff> contractTariffList( int contractId, Date date, int entityMid, int entityId )

Автор:  spectrum [ 27 июн 2016, 15:10 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

А почему в некоторых случаях часть параметров можно не указывать, а в некоторых надо? Вот например метод contractTariffGroupList (пример в первом сообщении) также есть параметр дата, но его монжо не указывать.

Указал дату:
Код:
{"method" : "contractTariffList", "user" :{ "user" : "username", "pswd" : "password" }, "params" : { "contractId": "1", "date" : "2016-06-27", "entityMid" : "1", "entityId" : "-1"  } }


Результат аналогичный:
Код:
{"status":"ok","exception":null,"message":"","tag":null,"data":{"return":[]}}

Автор:  dimOn [ 27 июн 2016, 16:05 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

А у вас нет возможности вызывать веб-сервисы не через json-костыль, а канонично?
На чём пишете?

Автор:  spectrum [ 27 июн 2016, 16:29 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Хм. Вроде раньше писали, что как раз на json все переводите. А как канонично вызывать? Я по-другому не умею.

И вот для метода contractTariffGroupList рабоатет же все. Мне нужен просто ответ на contractTariffList и больше ничего, собственно, не нужно.

Данный скрипт пишу на java, используя json.jar

Автор:  spectrum [ 29 июн 2016, 12:56 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

Как мне этот вопрос решать дальше? Подскажите, плиз.

Автор:  skn [ 29 июн 2016, 13:12 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

попробуйте так

Код:
{"method" : "contractTariffList", "user" :{ "user" : "username", "pswd" : "password" }, "params" : { "contractId": "1", "date" : "2016-06-27", "entityMid" : "-1", "entityId" : "-1"  } }

Автор:  dimOn [ 29 июн 2016, 13:42 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

выше написали же, что надо в вашм случае для сущностей использовать -1, потому что вам тарифы договора надо а не сущностей модуля инет

Автор:  spectrum [ 29 июн 2016, 15:29 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

skn писал(а):
попробуйте так

Код:
{"method" : "contractTariffList", "user" :{ "user" : "username", "pswd" : "password" }, "params" : { "contractId": "1", "date" : "2016-06-27", "entityMid" : "-1", "entityId" : "-1"  } }


Все получилось! Спасибо!

Автор:  stark [ 07 июл 2016, 19:36 ]
Заголовок сообщения:  Re: [6.2] Метод contractTariffList в ContractTariffService

spectrum писал(а):

Данный скрипт пишу на java, используя json.jar


На java можно и вот так.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/