java - 如何在 Java 1.6 中获得 Apache XML-RPC 3.1.3 合规性(ISO 日期格式和时区)

标签 java eclipse apache xml-rpc java-6

我们正在使用 Apache XML-RPC 3.1.3 与 Air billing 解决方案进行通信。在文档中提到 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 - 在 MyTypeFactory.java 类中找不到 pFormat 变量

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));

在此代码中,我们收到错误“数据超出范围”,因为我们没有以无效格式传递日期。

最佳答案

在查看文档后,我们了解到,其日期格式相关问题。 Apache XML-RPC 默认日期格式不带时区,航空计费解决方案(Ericsson CS 5.1)接受日期和时区。

Apache XML-RPC Data Types

UCIP Programmers Guide CS5.1

我们已经解决了上述两个问题

错误 1 ​​- 通过在 SimpleDateFormat 中添加新格式并在 MyTypeFactory 类中用 newFormat() 替换 pFormat

错误 2 - 通过在构造函数中传递 XmlRpcClient 对象,因为 XmlRpcClient 是 XmlRpcServer 和 XmlRpcClient 的基础类:) 例如

client.setTypeFactory(new MyTypeFactory(client));

关于java - 如何在 Java 1.6 中获得 Apache XML-RPC 3.1.3 合规性(ISO 日期格式和时区),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763272/

相关文章:

apache - 我发现一个问题,当我将 apache benchmark(ab) 与 http 一起使用时

php - 我如何告诉 Apache2,默认运行 mod_php5,但在 CGI 模式下运行此 VH?

java - 正则表达式删除除字符和数字之外的所有内容

java - "Couldn' t 解析对语法 'org.eclipse.xtext.common.Terminals' 的引用“- PDE 已安装

java - Web Socket - Spring : Confirm of message received

android - 如何防止 Eclipse 创建 fragment_main.xml

Windows 7 Pro 64 位下的 Android SDK 设置

apache - 升级的 OpenSSL - 如何使用 Apache HTTPD?

java - 整数返回方法使组件在 JPanel 中不可见

单击两个 jbutton 后的 java swing Action 事件