![](/img/trans.png)
[英]Can I have the XML in the log when sending FastInfoset request with Apache CXF?
[英]Disable FastInfoset (force XML) on Apache CXF when using the client
當我是客戶端而我無法控制服務器或配置時,我需要強制Apache CXF發送XML請求並僅處理XML響應(我看到了這一點,但它只適用於服務器)。 現在它總是使用FastInfoset,這對於性能很好,但是引起了一些問題,我希望能夠禁用它,但我沒有在Internet上找到關於FastInfoset的更多信息,應該如何禁用它。 你有線索嗎?
預先感謝您的任何幫助。
僅當遠程服務器支持純XML響應時,才可以執行此操作。 大多數支持Fastinfoset和純XML的服務器都在查看請求中的Accept
標頭,以決定返回響應的格式。 因此,您可以嘗試通過向每個請求發送Accept: application/xml
標頭來強制執行XML響應。 為此,您需要創建一個CXF out攔截器並將其注冊到您的應用程序中。
Interceptor之后將始終設置Accept: application/xml
public class HttpHeaderInterceptor extends AbstractPhaseInterceptor<Message>{
public XmlOnlyInterceptor() {
super(Phase.POST_PROTOCOL);
}
@Override
public void handleMessage(Message message) throws Fault {
Map<String, List> headers = (Map<String, List>)message.get(Message.PROTOCOL_HEADERS);
headers.put("Accept", Collections.singletonList("application/xml"));
}
}
要注冊它,請使用以下配置
<jaxws:client id="clientBean" serviceClass="org.example.service.ServicePortType"
address="example.org/src/service/ServicePort">
<jaxws:outInterceptors>
<bean class="org.example.interceptor.HttpHeaderInterceptor"/>
</jaxws:outInterceptors>
</jaxws:client>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.