Как получить соответствие Apache XML-RPC 3.1.3 (формат даты ISO вместе с часовым поясом) в Java 1.6
Мы используем Apache XML-RPC 3.1.3 для связи с биллинговым решением Air. В документации упоминается, что apache xml-rpc следует формату даты как java.util.Date '19980717T14: 08: 55', но наш поставщик внедрил дату как 'yyyyMMdd'T'HH: mm: ssZ' с часовым поясом :(
Изучив документацию, мы узнаем, что нам нужно разработать собственный тип данных для работы с другим форматом даты ISO.http://ws.apache.org/xmlrpc/faq.html#nonstandard_date_format Мы попытались продолжить с предоставленным примером, но в итоге получили две ошибки
1 - переменная pFormat не найдена в классе MyTypeFactory.java
2 - конструктор не найден при указании этих изменений в клиентском классе client.setTypeFactory (new MyTypeFactory ());
Может кто-нибудь исправить нас, если мы что-то упустили, или поделиться каким-либо другим способом реализации пользовательских типов данных в Apache XML-RPC 3.1.3
Наш код класса клиента
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://10.x.x.x:1234/Air"));
config.setEnabledForExceptions(true);
config.setBasicUserName("myUser");
config.setBasicPassword("myPassword");
config.setEncoding(XmlRpcClientConfigImpl.UTF8_ENCODING);
config.setReplyTimeout(3 * 1000);
config.setUserAgent("ITIVR/4.3/1.0"); //3.1 or 4.3
client.setConfig(config);
XmlRpcClient client = new XmlRpcClient();
XmlRpcSunHttpTransport http = (XmlRpcSunHttpTransport) new XmlRpcSunHttpTransportFactory(client).getTransport();
Hashtable request = new Hashtable();
request.put("originNodeType", new String("IVR"));
request.put("originHostName", new String("ITIVR"));
request.put("originTransactionID", new String(new SimpleDateFormat("ddMMyyyyHHmmss").format(new Date())));
request.put("originTimeStamp", new Date());
request.put("subscriberNumber", "0111111111");
Vector v = new Vector();
v.add(request);
HashMap o = (HashMap) http.sendRequest(new XmlRpcClientRequestImpl(config, "GetBalanceAndDate", v));
В этом коде мы получаем ошибку «Данные вне границ», потому что мы не передаем дату в недопустимом формате.