在 SoapUI/Postman 中我发送这个请求
请注意我是如何获得 401 Unauthorized 的,但我得到的是响应主体。预计会出现 401。
现在我正在尝试使用 jax-ws 发送此消息。我用处理程序拦截消息响应。
我的处理程序看起来像这样:
public class SHandler implements SOAPHandler<SOAPMessageContext> {
@Override
public Set<QName> getHeaders() {
System.out.println(">>>>>>>>>>> GetHeaders");
return null;
}
@Override
public boolean handleMessage(SOAPMessageContext soapMessageContext) {
boolean isRequest = (Boolean) soapMessageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (!isRequest) {
try {
System.out.println(soapMessageContext.getMessage().getSOAPBody().getValue(););
} catch (SOAPException e) {
e.printStackTrace();
}
}
System.out.println(">>>>>>>>> Message");
return true;
}
@Override
public boolean handleFault(SOAPMessageContext soapMessageContext) {
try {
System.out.println(soapMessageContext.getMessage().getSOAPBody().getValue());
} catch (SOAPException e) {
e.printStackTrace();
}
System.out.println(">>>>>>>>>>> HandleFault");
return true;
}
@Override
public void close(MessageContext messageContext) {
System.out.println(">>>>>>>>>>> Close");
}
}
我希望从请求中得到一个返回值,但我得到的是空值。我只在控制台中看到此响应:
com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized
我如何获得邮递员请求中显示的正文?
一些更多的上下文信息:
向模糊端点发出请求的 jax-ws 服务
@WebServiceClient(
name = "LIReceiveMessageService",
targetNamespace = "http://uic.cc.org/UICMessage",
wsdlLocation = "src/main/java/nl/rls/ci/soapinterface/UICCCMessageProcessingInboundWS.wsdl"
)
public class LIReceiveMessageService
extends Service {
....
}
我使用 this oracle 指南添加的 messageResolver。
LIReceiveMessageService service = new LIReceiveMessageService();
service.setHandlerResolver(new MyHandlerResolver());
在 handlemessage 方法中,您可以添加以下内容
ByteArrayOutputStream stream = new ByteArrayOutputStream(); message.writeTo(stream); String messageBody = new String(stream.toByteArray());