在 Java 中使用 JAX WS 验证响应调用



我有一个关于Javajax ws的问题。 实际上,我有一个调用web service方法的客户端:

客户端实现

URL url = new URL("file:/D:/Projects/Mywsdl.wsdl");
QName qname = new QName("http://adresse/", "ImpWSService");
Service service = Service.create(url, qname);
//web service Interface
DomaineIntWS domaineIntWS = service.getPort(DomaineIntWS.class);
//web service methode call   
String echo = scciProxyIntWS.echocall("xxx");

WS 接口

import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public abstract interface DomaineIntWS
{
public abstract String echocall(@WebParam(name="testEcho") String paramString);
}

我的问题是如何在我的客户端实现中添加一种可以测试 ws 结果调用的方法,例如测试代码响应是否等于 200 OK?

我如何使用 jax ws 做到这一点?

谢谢大家。

您需要将 Port 强制转换为 BindingProvider,如下所示:

URL url = new URL("file:/D:/Projects/Mywsdl.wsdl");
QName qname = new QName("http://adresse/", "ImpWSService");
Service service = Service.create(url, qname);
//web service Interface
DomaineIntWS domaineIntWS = service.getPort(DomaineIntWS.class);
try {
String echo = domaineIntWS.echocall("xxx");
} catch (Exception e) {
//do something with a possible exception
} finally {
BindingProvider bpDomaineIntWS = (BindingProvider) domaineIntWS;
int httpResponseCode =(Integer) bpDomaineIntWS.getResponseContext().get(MessageContext.HTTP_RESPONSE_CODE);
}

旁注: 请注意,即使您获得了响应代码的值,JAX-WS 实现也将处理响应。

在大多数情况下,您不必担心处理自己的代码和东西。这就是 JAX-WS 的全部目的。否则,您将使用原始的HttpClient库。

最新更新