我需要遵守一个规范,它在使用MTOM/XOP提供和使用Web服务时(出于历史原因)提出了一些非常不寻常的要求:
总之,内容类型HTTP报头必须编码如下:开始信息和操作必须编码为内容类型:start-info="application/soap+xml";action="urn:ihe:iti:2007:RetrieveDocumentSet"的单独参数。
Content-Type: multipart/related;start="...";type="application/xop+xml";boundary="...";start-info="application/soap+xml;action=\"urn:ihe:iti:2007:RetrieveDocumentSet\""
这同样适用于与web服务消息一起发送的MIME边界。
Java7和Java7 8包含的JAX实现似乎以不同的方式处理这个问题,即:Java7按照我需要遵守的规范进行编码,而Java8则按照MTOM/XOP规范进行编码。我不能回到Java8,因为我使用的其他库需要Java8
有没有一种方法可以修改JAX的行为,或者在到达另一个系统之前拦截和更改标头/ MIME边界?
发布于 2015-10-09 06:06:39
同时,我们找到了一个答案:可以在应用程序中使用自定义TubeFactory。然后,这可以返回一个标准的HttpTransportPipe,其中包含一个经过修改的Codec实现,该实现修改了getStaticContentType(Packet)方法中的Content标头。
https://stackoverflow.com/questions/31288328
复制相似问题