Помогите с SOAP

Разработка скриптов BGBS. Работа напрямую с БД. Структура системы и БД. Разработка экшенов. Доработка шаблонов. Вопросы переноса данных из других систем. Вопросы интеграции биллинга с внешними системами.

Помогите с SOAP

Сообщение skyb » 01 июл 2013, 20:10

С самого нуля, хотяб ссылки, есть система, с ней в обои стороны обмениваться по SOAP, как использовать скачанные WSDL и тд., хотяб ссылками
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 01 июл 2013, 20:11

да, это все с биллингом стыковать нужно
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 01 июл 2013, 20:40

jdk/bin/wsimport ./MngFacadeAPI.WSDL -s src -p api.ru.televox.bgbilling...mng
jdk/bin/wsimport ./Mng2FacadeAPI.WSDL -s src -p api.ru.televox.bgbilling...mng2

Результат из папки src (которую предварительно нужно создать) положить в BGBilling/dyn.

Предположим, первая wsdl - это удаленый сервис, чтобы с ним работать, нужно сделать так:
$this->bbcode_second_pass_code('', ' MngFacadeAPI mngFacadeAPI = new MngFacadeAPIService( new URL( "http://host:port/application/api/MngFacadeAPI?wsdl" ) ).getMngFacadeAPIPort();
Map<String, Object> requestContext = ((BindingProvider)mngFacadeAPI).getRequestContext();
requestContext.put( BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://host:port/application/api/MngFacadeAPI" );')
Второй нужно реализовать на BGBilling - в пакете (папке) api.ru.televox.bgbilling...mng2 нужно создать пакет (папку) impl, в нем создать класс Mng2FacadeAPIImpl.java и реализовать в нем методы из Mng2FacadeAPI
$this->bbcode_second_pass_code('', '@WebService(endpointInterface = "ru.televox.bgbilling...mng2.Mng2FacadeAPI")
public class Mng2FacadeAPIImpl
extends AbstractService
implements Mng2FacadeAPI
{
}') В результате web-сервис должен стать доступен по адресу http://bgb:8080/bgbilling/api/ru.televo ... deAPI?wsdl
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 02 июл 2013, 06:05

По удаленному сервису, получилось у меня InventorySoap.wsdl положил я его /usr/local/BGBillingServer/dyn сюда, пытаюсь импортировать

$this->bbcode_second_pass_code('', '

package ru.skyb.scripts.behavior;

import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import inventory.Address;
import inventory.ArrayOfAvailabilityRequest;
import inventory.AvailabilityInfo;
import inventory.AvailabilityRequest;
import inventory.InventorySoap;
import inventory.InventorySoapSoap;

import java.net.URL;

import javax.xml.namespace.QName;


public class Astlu
extends EventScriptBase
{
@Override
public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )
throws Exception
{
}

}')
Ругается на импорт
$this->bbcode_second_pass_code('', 'import inventory.Address;
import inventory.ArrayOfAvailabilityRequest;
import inventory.AvailabilityInfo;
import inventory.AvailabilityRequest;
import inventory.InventorySoap;
import inventory.InventorySoapSoap;
')
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 02 июл 2013, 14:35

Нажимаете "скомпилировать все"?
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 02 июл 2013, 15:08

да, нажимал, вот что в выводе
Вложения
Выделение_096.png
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение snark » 02 июл 2013, 15:15

Класс, на который ссылаешься, подкладывать надо же.
snark
Клиент
 
Сообщения: 3944
Зарегистрирован: 12 фев 2008, 18:10

Re: Помогите с SOAP

Сообщение skyb » 02 июл 2013, 15:16

куда подкладывать?
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 02 июл 2013, 15:17

После генерации через wsimport должны были сгенерироваться классы, судя по всему в папке inventory - эту папку со всеми классами - в dyn.
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 02 июл 2013, 16:35

неа, нужно папку classes запихать сюда
/usr/local/BGBillingServer/classes
о как
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 08:12

$this->bbcode_second_pass_quote('Amir', 'j')dk/bin/wsimport ./MngFacadeAPI.WSDL -s src -p api.ru.televox.bgbilling...mng
jdk/bin/wsimport ./Mng2FacadeAPI.WSDL -s src -p api.ru.televox.bgbilling...mng2

Результат из папки src (которую предварительно нужно создать) положить в BGBilling/dyn.

Предположим, первая wsdl - это удаленый сервис, чтобы с ним работать, нужно сделать так:
$this->bbcode_second_pass_code('', ' MngFacadeAPI mngFacadeAPI = new MngFacadeAPIService( new URL( "http://host:port/application/api/MngFacadeAPI?wsdl" ) ).getMngFacadeAPIPort();
Map<String, Object> requestContext = ((BindingProvider)mngFacadeAPI).getRequestContext();
requestContext.put( BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://host:port/application/api/MngFacadeAPI" );')
Второй нужно реализовать на BGBilling - в пакете (папке) api.ru.televox.bgbilling...mng2 нужно создать пакет (папку) impl, в нем создать класс Mng2FacadeAPIImpl.java и реализовать в нем методы из Mng2FacadeAPI
$this->bbcode_second_pass_code('', '@WebService(endpointInterface = "ru.televox.bgbilling...mng2.Mng2FacadeAPI")
public class Mng2FacadeAPIImpl
extends AbstractService
implements Mng2FacadeAPI
{
}') В результате web-сервис должен стать доступен по адресу http://bgb:8080/bgbilling/api/ru.televo ... deAPI?wsdl



По первому вроде понял, а вот по второму не особо, можно рабочий класс скинуть?
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 14:59

http://bgbill.net:8080/bgbilling/api/ru ... /Zoho?wsdl
ссылка, скрипт
$this->bbcode_second_pass_code('', '
package api.ru.skyb.bgbilling.service.impl;


import java.sql.Connection;
import java.util.Date;

import javax.jws.WebService;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.tariff.option.common.service.TariffOptionService;
import ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionDao;
import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption;
import java.text.SimpleDateFormat;

@WebService(endpointInterface = "api.ru.skyb.bgbilling.service.impl.ZohoImpl")
public class ZohoImpl
extends AbstractService

{

}
')
но при переходе по ссылке
$this->bbcode_second_pass_code('', 'HTTP Status 500 -

type Status report

message

description The server encountered an internal error () that prevented it from fulfilling this request.')
что не так?
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 08 июл 2013, 15:34

Нужно в логах сервера ошибки смотреть.
Если просто свой сервис (а не реализация чужого интерфейса), то попробуйте:
$this->bbcode_second_pass_code('', '@WebService()
public class ZohoImpl
extends AbstractService
{
public String test() {
return "Hello world!";
}
}')
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 15:38

07-08/09:38:10 ERROR [bitel.billing.server.admin.action.ActionCommand] LoggingPrintStream - com.sun.xml.ws.model.RuntimeModelerException: A @WebService.targetNamespace must be specified on classes with no package. Class: api.ru.skyb.bgbilling.service.impl.ZohoImpl
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 08 июл 2013, 15:40

$this->bbcode_second_pass_code('', '@WebService(targetNamespace = "http://billing.skyb.ru")
public class ZohoImpl
extends AbstractService
{
public String test() {
return "Hello world!";
}
}') или, например: $this->bbcode_second_pass_code('', '@WebService(targetNamespace = "urn:billing-zoho")')
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 15:46

Да, помогло, а из чего исходить выбирая эту переменную?
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 16:50

а есть пример создания договора по шаблону?
$this->bbcode_second_pass_code('', '
package api.ru.skyb.bgbilling.service.impl;


import java.sql.Connection;
import java.util.Date;

import javax.jws.WebService;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.tariff.option.common.service.TariffOptionService;
import ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionDao;
import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption;
import java.text.SimpleDateFormat;


import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import java.sql.*;
import java.util.*;
import java.util.Date;
import bitel.billing.server.contract.bean.ContractManager;

import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.*;

@WebService(targetNamespace = "urn:billing-zoho")
public class ZohoImpl
extends AbstractService
{

public Contract createFromPattern(int pattern_id, java.lang.String title, java.util.Calendar date, java.lang.String pswd)
{
//Не подскажите что сюда вставить чтоб по шаблону создался договор?????
}
')
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 08 июл 2013, 16:59

http://bgbilling.ru/v6.0/javadoc/bitel/billing/server/contract/bean/ContractManager.html#createFromPattern(int, java.lang.String, java.util.Calendar, java.lang.String, java.util.Map, boolean, int, int, java.lang.String, int, java.util.Map)
$this->bbcode_second_pass_code('', ' ContractManager contractManager = new ContractManager( context.getConnection() );
Contract contract = contractManager.createFromPattern( card.getPatternId(), null, new GregorianCalendar(), card.getCardPinCode(), new HashMap<String, Object>(),
true, 0, 0, null, User.USER_SERVER, params );')
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 17:14

нене, мне же нужно передать эти параметры со стороннего приложения
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение Amir » 08 июл 2013, 17:18

$this->bbcode_second_pass_code('', ' Contract contract = contractManager.createFromPattern( pattern_id, null, date, pswd, new HashMap<String, Object>(), true, 0, 0, title, User.USER_SERVER, params );')
Аватара пользователя
Amir
Разработчик
 
Сообщения: 5940
Зарегистрирован: 19 дек 2006, 21:04

Re: Помогите с SOAP

Сообщение skyb » 08 июл 2013, 17:25

$this->bbcode_second_pass_quote('Amir', '[')code] Contract contract = contractManager.createFromPattern( pattern_id, null, date, pswd, new HashMap<String, Object>(), true, 0, 0, title, User.USER_SERVER, params );[/code]

$this->bbcode_second_pass_code('', 'package api.ru.skyb.bgbilling.service.impl;


import java.sql.Connection;
import java.util.Date;

import javax.jws.WebService;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.tariff.option.common.service.TariffOptionService;
import ru.bitel.bgbilling.kernel.tariff.option.server.bean.ContractTariffOptionDao;
import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption;
import java.text.SimpleDateFormat;


import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import java.sql.*;
import java.util.*;
import java.util.Date;
import bitel.billing.server.contract.bean.ContractManager;

import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.*;

@WebService(targetNamespace = "urn:billing-zoho")
public class ZohoImpl
extends AbstractService
{

GregorianCalendar nowDate = new GregorianCalendar();

Connection con = getConnection();

ContractManager contractManager = new ContractManager( context.getConnection() );
public Contract createFromPattern(int pattern_id, java.lang.String title, java.util.Calendar date, java.lang.String pswd)
throws BGException
{
Contract contract = contractManager.createFromPattern( pattern_id, null, date, pswd, new HashMap<String, Object>(), true, 0, 0, title, User.USER_SERVER, params );

}
}')
Вложения
Выделение_099.png
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 15 июл 2013, 19:30

А ещё вопрос, урл должен обязательно быть с ?wsdl чтоб увидеть там реализованные методы?
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 16 июл 2013, 06:56

разобрался
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение skyb » 09 авг 2013, 15:38

а какой soap используется в биллинге?
SoapRpc или SoapDocument
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск

Re: Помогите с SOAP

Сообщение arengin » 11 сен 2013, 23:24

Надеюсь не против если я здесь пофлужу чутка)
В общем целом то же самое нужно реализовать, скомпилил без ошибок вышеприведенный код (порадовался, забавно скомпилить то не знаю что...) В итоге понял что не в курсе что есть soap... Разобрался более менее, представил. Понял что втянуться быстро не получится, решил начать с простого взял имеющийся пример http://wiki.bitel.ru/index.php/PHP_soapClient
Более менее разобрал что к чему, в итоге не могу понять каким образом передать несколько переменных в функцию через soap..
php скрипт
$this->bbcode_second_pass_code('', '$wsdl = "http://192.168.0.1:8080/bgbilling/api/ru.customservice.bgbilling.service/SomeService?wsdl";
$client = new SoapClient($wsdl);
$answer = $client->getSomeData('Aleks', 'Timur');
var_dump ($answer);
$cid=$answer->return->cid;
echo "Output: $cid\n";')

Ну и динамический код в bgbilling'е
$this->bbcode_second_pass_code('', 'package api.ru.customservice.bgbilling.service.impl;

import javax.jws.WebService;
import api.ru.customservice.bgbilling.bean.SomeData;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;

@WebService(targetNamespace = "customservice")
public class SomeServiceImpl
extends AbstractService{
/**
* @param a
* @soap
* @return
*/
public SomeData getSomeData( String a, String b )
{
a = "Hello " + a + " " + b;
SomeData someData = new SomeData();
someData.setCid( a );

return someData;
}
}')
Все что удалось получить в ответ:
$this->bbcode_second_pass_code('', 'object(stdClass)#2 (1) { ["return"]=> object(stdClass)#3 (1) { ["cid"]=> string(15) "Hello null null" } } Output: Hello null null')

Во всех мануалах аргументы функции передаются в виде одномерного массива(мне как бы больше и не требуется), но как бы я не пробовал, мне не удается заставить вывести переменные. Хоть как в моем варианте, хоть так:
$this->bbcode_second_pass_code('', 'client->__soapCall("getSomeData", array('Aleks', 'Timur'));')
хоть как в примере(чего я какраз до сих пор не могу понять - почему вложенный массив в массив)
$this->bbcode_second_pass_code('', 'client->__soapCall("getSomeData", array(array('Aleks', 'Timur')));')
И через массив попробовал
менял получение аргумента в виде массива
$this->bbcode_second_pass_code('', 'public SomeData getSomeData( String[] a )')
чем черт не шутит, но что то не поддается ни с какого угла мне эта функция. В чем я не прав?
Аватара пользователя
arengin
 
Сообщения: 20
Зарегистрирован: 12 авг 2013, 11:10
Откуда: Шадринск

Re: Помогите с SOAP

Сообщение skn » 11 сен 2013, 23:51

на вики
$this->bbcode_second_pass_quote('', '$')answer = $client->__SoapCall("getSomeData", array( array ( 'arg0' => 'Aleks0', 'arg1' => 'Aleks1' ) ) );

по моему ваш вариант отличается...
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия
Вернуться к началу

Re: Помогите с SOAP

Сообщение arengin » 12 сен 2013, 00:02

$this->bbcode_second_pass_quote('skn', '')а вики
$this->bbcode_second_pass_quote('', '$')answer = $client->__SoapCall("getSomeData", array( array ( 'arg0' => 'Aleks0', 'arg1' => 'Aleks1' ) ) );

по моему ваш вариант отличается...

Да вроде тоже пробовал, мы получаем первую переменную, но, вторую не удается получить. Просто если я совсем все вариации запишу которые появлялись у меня в голове - это будет смешно)
$this->bbcode_second_pass_code('', 'object(stdClass)#2 (1) { ["return"]=> object(stdClass)#3 (1) { ["cid"]=> string(17) "Hello Aleks0 null" } } Output: Hello Aleks0 null ')
Аватара пользователя
arengin
 
Сообщения: 20
Зарегистрирован: 12 авг 2013, 11:10
Откуда: Шадринск
Вернуться к началу

Re: Помогите с SOAP

Сообщение skn » 12 сен 2013, 01:03

а если так
$this->bbcode_second_pass_code('', 'public SomeData getSomeData( String a, String b )')
меняем на
$this->bbcode_second_pass_code('', 'public SomeData getSomeData( @WebParam( name = "a" ) String a, @WebParam( name = "b" ) String b )')
и вызывать
$this->bbcode_second_pass_code('', '$answer = $client->__SoapCall("getSomeData", array( "getSomeData" => array ( 'a' => 'Aleks0', 'b' => 'Aleks1', ) ) );')
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Помогите с SOAP

Сообщение arengin » 12 сен 2013, 01:19

Вот кстати еще примерчик с массивом, тут error на выходе не понятной для меня консистенции.
биллинг
$this->bbcode_second_pass_code('', 'package api.ru.customservice.bgbilling.service.impl;

import javax.jws.WebService;
import api.ru.customservice.bgbilling.bean.SomeData;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;

@WebService(targetNamespace = "customservice")
public class SomeServiceImpl
extends AbstractService{
/**
* @param a
* @soap
* @return
*/
public SomeData getSomeData( String[] a )
{
String b = "Hello " + a[0] + " " + a[1];
SomeData someData = new SomeData();
someData.setCid( b );

return someData;
}
}
')
php скрипт
$this->bbcode_second_pass_code('', '$wsdl = "http://192.168.0.1:8080/bgbilling/api/ru.customservice.bgbilling.service/SomeService?wsdl";
$client = new SoapClient($wsdl);
$answer = $client->__SoapCall("getSomeData", array( array ( 'arg0' => 'Aleks0', 'arg1' => 'Aleks1' ) ) );
var_dump ($answer);
$cid=$answer->return->cid;
echo "Output: $cid\n";')
Ошибка:
$this->bbcode_second_pass_code('', 'Fatal error: Uncaught SoapFault exception: [S:Server] 1 in /путь до скрипта/soap.php:16 Stack trace: #0 /путь до скрипта/soap.php(16): SoapClient->__soapCall('getSomeData', Array) #1 {main} thrown in /путь до скрипта/soap.php on line 16')
16я строчка в коде
$this->bbcode_second_pass_code('', '$answer = $client->__SoapCall("getSomeData", array( array ( 'arg0' => 'Aleks0', 'arg1' => 'Aleks1' ) ) );')
SoapFault:
$this->bbcode_second_pass_code('', 'object(SoapFault)#5 (10) { ["message":protected]=> string(1) "1" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(46) "/путь до скрипта/soap.php" ["line":protected]=> int(16) ["trace":"Exception":private]=> array(1) { [0]=> array(6) { ["file"]=> string(46) "/путь до скрипта/soap.php" ["line"]=> int(16) ["function"]=> string(10) "__soapCall" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(2) { [0]=> string(11) "getSomeData" [1]=> array(1) { [0]=> array(2) { ["arg0"]=> string(6) "Aleks0" ["arg1"]=> string(6) "Aleks1" } } } } } ["previous":"Exception":private]=> NULL ["faultstring"]=> string(1) "1" ["faultcode"]=> string(8) "S:Server" ["detail"]=> object(stdClass)#2 (1) { ["exception"]=> object(stdClass)#3 (2) { ["message"]=> string(1) "1" ["stackTrace"]=> object(stdClass)#4 (1) { ["frame"]=> array(43) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" [6]=> string(0) "" [7]=> string(0) "" [8]=> string(0) "" [9]=> string(0) "" [10]=> string(0) "" [11]=> string(0) "" [12]=> string(0) "" [13]=> string(0) "" [14]=> string(0) "" [15]=> string(0) "" [16]=> string(0) "" [17]=> string(0) "" [18]=> string(0) "" [19]=> string(0) "" [20]=> string(0) "" [21]=> string(0) "" [22]=> string(0) "" [23]=> string(0) "" [24]=> string(0) "" [25]=> string(0) "" [26]=> string(0) "" [27]=> string(0) "" [28]=> string(0) "" [29]=> string(0) "" [30]=> string(0) "" [31]=> string(0) "" [32]=> string(0) "" [33]=> string(0) "" [34]=> string(0) "" [35]=> string(0) "" [36]=> string(0) "" [37]=> string(0) "" [38]=> string(0) "" [39]=> string(0) "" [40]=> string(0) "" [41]=> string(0) "" [42]=> string(0) "" } } } } } ')

По предложенному вами варианту, сделал как сказали:
биллинг
$this->bbcode_second_pass_code('', 'package api.ru.customservice.bgbilling.service.impl;

import javax.jws.WebParam;
import javax.jws.WebService;
import api.ru.customservice.bgbilling.bean.SomeData;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;

@WebService(targetNamespace = "customservice")
public class SomeServiceImpl
extends AbstractService{
/**
* @param a
* @soap
* @return
*/
public SomeData getSomeData( @WebParam( name = "a" ) String a, @WebParam( name = "b" ) String b )
{
String c = "Hello " + a + " " + b;
SomeData someData = new SomeData();
someData.setCid( c );

return someData;
}
}
')
php скрипт
$this->bbcode_second_pass_code('', '$wsdl = "http://192.168.0.1:8080/bgbilling/api/ru.customservice.bgbilling.service/SomeService?wsdl";
$client = new SoapClient($wsdl);
$answer = $client->__SoapCall("getSomeData", array( "getSomeData" => array ( 'a' => 'Aleks0', 'b' => 'Aleks1', ) ) );
var_dump ($answer);
$cid=$answer->return->cid;
echo "Output: $cid\n";')
Получаемс:
$this->bbcode_second_pass_code('', 'object(stdClass)#2 (1) { ["return"]=> object(stdClass)#3 (1) { ["cid"]=> string(15) "Hello null null" } } Output: Hello null null')
Бьюсь уже об эту вроде как легкую задачку со вчерашнего вечера и уже готов плакать и смеяться одновременно)
Аватара пользователя
arengin
 
Сообщения: 20
Зарегистрирован: 12 авг 2013, 11:10
Откуда: Шадринск

Re: Помогите с SOAP

Сообщение skn » 12 сен 2013, 04:12

1) см. php.ini
$this->bbcode_second_pass_code('', '[soap]
; Enables or disables WSDL caching feature.
; http://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=1

; Sets the directory name where SOAP extension will put cache files.
; http://php.net/soap.wsdl-cache-dir
soap.wsdl_cache_dir="/tmp"

; (time to live) Sets the number of second while cached file will be used
; instead of original one.
; http://php.net/soap.wsdl-cache-ttl
soap.wsdl_cache_ttl=86400

; Sets the size of the cache limit. (Max. number of WSDL files to cache)
soap.wsdl_cache_limit = 5
')

на время отладки отключить кеширование (первый параметр) и почистить кеш (каталог указан во втором параметре)

для метода
$this->bbcode_second_pass_code('', 'public SomeData getSomeData( String a, String b )')
параметры будут называться arg0 и arg1
если написать так
$this->bbcode_second_pass_code('', 'public SomeData getSomeData( @WebParam( name = "aa" ) String aa, String bb )')
параметры будут называться aa и arg1
узнать как называются параметры можно открыв wsdl в браузере, найти в ней параметр schemaLocation= и перейти по указаному в параметре адресу

$this->bbcode_second_pass_code('', '$client = new SoapClient($wsdl, array( 'trace' => true ) );
#var_dump($client->__getFunctions());
$params = array('arg0'=>"Aleks0",'arg1'=>"Aleks1");
$answer = $client->getSomeData( $params );
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
#var_dump ($answer);
#print_r($answer);
$cid = $answer->return->cid;
echo "Output: $cid\n"
')
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

След.

Вернуться в API, скрипты, BGBS, программирование, структура системы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron