1

我正在尝试使用 JAX-WS 使用 Exchange 2010 Web 服务接口。我正在使用 JAX-WS 2.2 RI (Metro 2.0)。2.1 出现了同样的问题。

我遇到了 Exchange 的问题,它返回“HTTP/1.1 415 无法处理消息,因为内容类型 'text/xml;charset=utf-8' 不是预期的类型 'text/xml;charset=utf-8' 。” 作为响应(2.1 引用了字符集值,否则相同的响应)。

显然,我需要指定确切的 Content-type 标头才能让 Exchange 满意。

有没有办法让我在不强迫我手动重建依赖项的情况下做到这一点?我目前依赖于已发布的 Maven 工件,如果可能的话,我希望继续这样做。

消费进程是一个常规的 J2SE 应用程序,看不到容器。我可以控制应用程序,并且可以向应用程序范围添加几乎所有需要的东西,但不能添加像代理服务器这样的进程外项目。客户端类是从本地 WSDL 生成的,但字符集规范派生自 jaxws RI 实现中声明的常量,而不是生成的代码。因此,生成的 HTTP 传输由 Sun JRE5 或 JRE6 的标准 http/https 客户端处理。

4

1 回答 1

1

这个线程(给出一个缓存的链接,因为当前 java.net 论坛已关闭),看来故障最终是您的 Exchange Web Service 2010要求在分号后有一个空格 - 这不是w3c 规范的一部分。

一个解决方案可能是在地铁前面放置一些东西(取决于您的设置)以更改标题。

您可以尝试以下一些方法:

  • 使用反射来改变 Metro 常数。
  • 使用 AOP(我不能告诉你具体如何)
  • 查看这个常量在 Metro 中定义的位置,创建一个包javax.xml.ws.etc(或com.sun.etc..在您的源代码中,然后复制粘贴该类的源代码,更改常量。
于 2009-12-16T11:15:29.700 回答