一些背景:这是通过Eclipse创建的Weblogic Web服务创建的服务客户端。我相信这会在后台使用clientgen。

我正在尝试进行需要抢占式基本身份验证的SOAP调用。该请求已发送,但我正在设置的Mimeheaders没有处理。通话的接收者已通知我,请求本身已通过,但我设置的任何mimeheader都没有。

服务呼叫非常简单。

DescriptionService service = new DescriptionService(wsdlLocation, new QName("urn:descriptionService.service.company.com", "DescriptionService"));
service.setHandlerResolver(new HandlerResolver() {
  @SuppressWarnings("rawtypes")
  @Override
  public List<Handler> getHandlerChain(final PortInfo portInfo) {
    final List<Handler> handlerList = new ArrayList<Handler>();
    handlerList.add(new SOAPDescriptionServiceHeaderHandler());
    return handlerList;
  }
});

DescriptionServicePortType portType = service.getDescriptionServicePort();

DescriptionRequest request = new DescriptionRequest();
request.setId(id);
DescriptionResponse description = portType.describe(request);


处理程序是我设置Mimeheaders的地方:

  @Override
  public boolean handleMessage(final SOAPMessageContext context) {
    final Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    final SOAPMessage message = context.getMessage();

    if (outboundProperty.booleanValue()) {
      try {
        MimeHeaders mimeheaders = message.getMimeHeaders();
        String encodedAuth = Base64.encode(new String("un:pw").getBytes());
        mimeheaders.addHeader("Authorization", "Basic " + encodedAuth);
        this.logMessage(message, outboundProperty.booleanValue(), false);
      } catch (final Exception e) {
        // Log Error
      }
    } else {
      this.logMessage(message, outboundProperty.booleanValue(), false);
    }
    return true;
  }


它确实命中了该处理程序并设置了mimeheaders。如果设置断点并在mime标头离开handleMessage方法之前查看它,则可以看到它们已设置。

我可以在SoapUI中调用请求并获得响应。我设置了抢占式基本身份验证,并且工作正常。当我通过Java客户端发送请求时,没有任何响应,实际上却收到一条错误消息,指出内容类型不正确。我相信这个错误是指错误响应,因为我实际上没有得到响应(也没有在处理程序中点击handleMessage()方法),而且我知道请求正在通过text / xml进行处理,错误要求。

我不确定是否与“抢先”要求有关?有没有一种方法可以将这种基本身份验证设置设置为抢先式?

有什么想法吗?
任何援助将不胜感激。

最佳答案

基本身份验证是在HTTP层而不是SOAP层完成的,因此您需要配置基础HTTP库。 (MIME标头与此无关)

以CXF为例,请看这个问题HTTP basic authentication through CXF interceptor not working

09-30 15:19
查看更多