iPhone 应用程序上的 XMLInputFactory 错误(不在浏览器上)

问题描述 投票:0回答:1

我在 iPhone Conflunce 应用程序版本 1.37.0.1 和 Web 浏览器之间的不同行为上遇到了令人困惑的错误。

从技术上讲,宏从Redmine服务器接收数据(XML)。 XML 存储在 ByteArray 类中。
存储在 ByteArray 中可以缓存 Redmine 服务器响应一段时间。

为了解析它,它被 ByteArray Stream 包装:

public InputStream httpGetAsInputStream(String url) throws IOException {
   byte[] result = httpGetAsString(url).getBytes(UTF_8);
   return new ByteArrayInputStream(result);
}

private static void parse_xml(InputStream in, TicketState t) throws Exception {
   try {
      // ---> THIS FAILS  on IPhone only
       XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(in);
            ...
    }   ...
}

这就是方法的调用方式:

try {
     InputStream strm =  ....httpGetAsInputStream(tmpurl);
     parse_xml(strm, t);
     strm.close();
}

XML 输出被解析并呈现为 HTML 表格。

真正令我困惑的是,Web 浏览器按预期工作,但 iPhone 应用程序抛出异常:无法创建类 javax.xml.stream.XMLInputFactory 的提供程序

嗯,那是服务器端……iPhone应用程序和浏览器之间应该没有区别。

java confluence confluence-macros
1个回答
0
投票

我猜测编码存在问题(iPhone 使用不同的编码向浏览器发送响应)。

为什么要将 HTTP 响应读入字符串只是为了将其转换为字节数组?为什么不直接将响应字节读取到字节数组中?

© www.soinside.com 2019 - 2024. All rights reserved.