使用JAX-WS调用.NET ASMX(Soap)Web服务时发生XMLStreamException

时间:2011-03-07 00:53:35

标签: jax-ws

我正在尝试使用NetBeans调用.NET Web服务。我的一个web方法返回一个复杂类型,Java在处理响应时抛出一个异常。异常消息是:“prolog中不允许使用内容”。

使用Fiddler,我能够看到Web服务给出的确切响应,我相信问题在于内容开头的UTF-8 BOM序列(EF BB BF)。

我在Stack Overflow上发现了一个关于BOM序列和从.NET调用Java Web Services的类似问题,但在相反情况下没有任何内容。

1)这是JAX-WS能够处理的吗?

2)如果没有,是否可以控制和禁用UTF-8 BOM的输出?我尝试通过在每个请求开始时在Global.asax中添加以下行来设置Response ContentEncoding以省略UTF-8 BOM:Response.ContentEncoding = new System.Text.UTF8Encoding(false);

1 个答案:

答案 0 :(得分:1)

我知道这个答案有点晚了,但是当我遇到同样的问题并且没有明确的答案时,我的解决方案就是这样:

使用Apache CXF而不是使用默认使用的Oracle标准实现。您只需要将所需的库添加到类路径中。然后类加载器加载Apache CXF而不是Oracle加载,你就完成了。我没有必要更改任何代码行。

如果您使用的是Maven,则此工件会添加Apache CXF的必需(客户端)库:

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-rt-transports-http</artifactId>
  <version>${cxf.version}</version>
</dependency>