我正在使用Netbeans中的标准web服务客户端。SOAP服务器包含一个Cookie作为HTTP报头。我如何从客户端代码访问这个头/cookie ?
我假设一种方法涉及到使用MessageHandler。我已经添加了一个Web服务消息处理程序,我已经尝试修改public boolean handleMessage(SOAPMessageContext messageContext)
方法,但我不知道如何抓取HTTP头,而不是SOAPMessage。
我知道如何在web服务客户端添加自定义报头,例如身份验证,但我只是不知道如何在客户端获得自定义报头:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "Password".toCharArray());
}
我使用的解决方案是使用getResponseContext()
获得自定义HTTP头:
Map<String, Object> responseHeaders;
responseHeaders = sourceDispatch.getResponseContext();
Object cookie = responseHeaders.get("javax.xml.ws.http.response.headers");
这是很好的和熟悉的,因为我已经使用getRequestContext
设置自定义HTTP头。
尝试使用:
SOAPConnection connection = IpspSOAPConnectionFactory.newInstance().createConnection();
SOAPMessage responseSoap = connection.call(requestSoap, webServiceUrl);
String[] someHeader = responseSoap.getMimeHeaders().getHeader(someHeaderName);