繁体   English   中英

如何在Soap客户端中获取Http响应代码?

[英]How to get an Http response code in a soap client?

有一个肥皂网络服务和一个客户端。 使用Apache CXF / Spring捆绑包。
客户:

public class MyWebServiceClientFactoryCXF {
    public MyWebServiceAPI getMyWebServiceClient(String URI, String username, String password) throws MalformedURLException {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(MyWebServiceAPI.class);
        factory.setAddress(URI);
        factory.setUsername(username);
        factory.setPassword(password);
        factory.setDataBinding(new AegisDatabinding());
        return (MyWebServiceAPI) factory.create();
    }
}

春天的背景:

<bean id="myWebServiceClientFactory" class="mypakg.MyWebServiceClientFactoryCXF"/>
<bean id="myWebServiceClient" factory-bean="myWebServiceClientFactory" factory-method="getMyWebServiceClient">
        <constructor-arg index="0" type="java.lang.String" value="${ws.url}"/>
        <constructor-arg index="1" type="java.lang.String" value="${ws.login}"/>
        <constructor-arg index="2" type="java.lang.String" value="${ws.pwd}"/>
</bean>

用途:

public class App {
    @Autowired
    private MyWebServiceAPI wsClient;

    public void someMethod() {
        wsClient.getSomeInfo();
        // Need to know http response code from `wsClient.getSomeInfo()`
    }
}

如何从Soap Web服务获取响应代码? 我可以为JaxWsProxyFactoryBean指定一个拦截器,但是如何将值从拦截器传递到App.someMethod()方法?

考虑以下代码:

import org.apache.cxf.message.Message;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.endpoint.Client;


    public void someMethod() {
        try {
            wsClient.getSomeInfo(); //exception here for non-2xx http status by default
        } finally {
           Client client = ClientProxy.getClient(wsClient);
           Integer responseCode = client.getResponseContext().get(Message.RESPONSE_CODE);  
        }

也可以看看:

ClientProxy Javadoc

客户端javadoc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM