java 当出现ClientTransportException时,如何在SOAP响应中获取主体

gupuwyp2  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(147)

在SoapUI/Postman中,我正在发送这个请求x1c 0d1x注意我是如何得到一个401未授权的,但我得到了一个响应正文。401是预期的。
现在我尝试用jax-ws发送这个消息。我用一个处理程序拦截messagereonse。我的处理程序看起来像这样:

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");
    }
}

我希望从请求中得到一个返回值,但我得到了null。我只在控制台中看到以下响应:com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized如何获取Postman请求中显示的正文?
更多上下文信息:
向模糊端点发出请求的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 {
    ....
}

我使用此Oracle指南添加的messageResolver。

LIReceiveMessageService service = new LIReceiveMessageService();
service.setHandlerResolver(new MyHandlerResolver());
chy5wohz

chy5wohz1#

handleMessage方法中,可以添加以下内容

ByteArrayOutputStream stream = new ByteArrayOutputStream();
message.writeTo(stream);
String messageBody = new String(stream.toByteArray());

相关问题