Artur писал(а):
А чем механизм CustomAPI неудобен?
Там же нужно валидную XML на вход подать и т.п.
А тут просто либо GET либо POST запрос пульнул - что-то сделал, назад ответил.
И честно говоря, я делал
интеграцию через сustom API с 1цэ, и не скажу, что там все так просто. Убил кучу времени чтобы 1цэ это все корректно кушало.
А тут за 10 минут набросал скрипт, открыл сервлет в nginx, и отправил POST.
И все работает
Код:
import bitel.billing.server.CommonExecutor;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test
extends CommonExecutor {
static final Logger logger = Logger.getLogger( Test.class );
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
logger.info("Hello GET");
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
logger.info("Hello POST");
PrintWriter out = response.getWriter();
Setup setup = Setup.getSetup();
Connection con = setup.getDBConnectionFromPool();
ContractManager cm = new ContractManager(con);
String phone = getParameter(request, "phone", "");
String ipAddr = getParameter(request, "ipAddr", "");
logger.info("phone = " + phone);
logger.info("ipAddr = " + ipAddr);
try {
String query = "SELECT cid FROM contract_parameter_type_phone_item WHERE phone = ? ORDER BY cid DESC LIMIT 1 ";
logger.info("query = " + query);
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, phone);
ResultSet rs = ps.executeQuery();
while(rs.next()){
int cid = rs.getInt("cid");
Contract contract = cm.getContractById(cid);
logger.info(contract.getTitle());
out.append(contract.getTitle());
}
rs.close();
ps.close();
}
catch (SQLException e){
logger.error(e.getMessage(), e);
}
finally
{
ServerUtils.closeConnection(con);
}
out.println();
}
private static String getParameter(HttpServletRequest request, String name, String defaultValue) {
String value = request.getParameter(name);
return value != null ? value : defaultValue;
}
}