当前位置: 首页 > 知识库问答 >
问题:

如何访问肥皂头信息?

薄高懿
2023-03-14

我使用此代码登录到外部系统:

    LoginResponse response = (LoginResponse) webServiceTemplate.marshalSendAndReceive(myRequest, new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) {
                    ((SoapMessage)message).setSoapAction("http://www.system.com//Authentication/Login");
            }
        });

我收到一种LoginResponse,但它没有价值。

LoginResponse类型仅包含:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "LoginResponse", namespace = "http://www.system.com/Authentication/")
public class LoginResponse {


}

我需要从标头访问UserAuth值,但这不包含在LoginResponse对象中。

SOAP 响应为:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Header>
      <UserAuth xmlns="http://www.system.com/ws/">
         <Value>234234k234jl2k</Value>
      </UserAuth>
   </soap:Header>
   <soap:Body>
      <LoginResponse xmlns="http://www.system.com/Authentication"/>
   </soap:Body>
</soap:Envelope>

如何访问标题信息,在本例中是UserAuth值?

我是否需要使用更低层次的东西并从soap响应中解析所需的值?

更新:

我认为我需要使用SAAJ使用定义SOAP请求(类似于java对WebService的SOAP请求)并处理响应。

我的理解是,虽然响应中的soap头是可选的,但是大多数客户端在使用SOAP时都使用这个头来发送身份验证类型信息。可能是wsdl或生成。类文件不正确,因此响应没有填写所有必填字段,在本例中是soap头。

共有1个答案

终祯
2023-03-14

我假设您在对登录操作的响应中收到的来自< code>UserAuth头的信息需要在对服务的后续请求中作为SOAP头(可能与received头相同)发送。如果是这种情况,那么您应该创建一个自定义的< code>ClientInterceptor并在您的< code>WebServiceTemplate中注册它。拦截器将从登录响应中提取头部,转换它(如果需要)并将其添加到后续请求中。

注意,这个拦截器应该是有状态的。因此,您需要为每个对话使用单独的< code>WebServiceTemplate实例。

 类似资料:
  • 问题内容: 尝试指定自定义的肥皂标题。不知道如何填充SoapEnvelope.headerOut属性。 到目前为止我的代码? 这是标题WSDL提取… 问题答案: headerOut是您需要构建的Element []。 像这样 然后将其添加到数组中。

  • 我正在使用CXF Web客户端调用Soap Web服务。 WSDL2JAVA用于从wsdl生成Java代码。有来自soap头的信息,但生成的代码没有访问该头的方法。 如何通过CXF Web客户端获取标题信息?

  • 我正在尝试使用Angular2和Http POST对SOAP web服务进行一个非常简单的调用。如果我使用POSTMAN发布相同的消息,只需将内容类型设置为text/xml即可。 对于Angular2,我得到了以下错误:- SEC7120:原点http://localhost:3004在Access Control Allow Origin标头中找不到 SCRIPT7002: XMLHttpReq

  • 我在CentOS机器上启用标题中提到的模块时遇到了一些问题。 百胜安装php-mCrypt/php-soc/php-mysql工作正常,并提到它们已经安装,重新启动Apache后,似乎它们没有启用。 例如,我无法定位mcrypt.so,运行php--ini会给出: 这是在我放置extension=mcrypt之后。所以在php中。伊尼。

  • 问题内容: 我正在使用Java开发基于Soap的Web服务。谁能让我知道如何认证使用Web服务的客户端? 谢谢。 问题答案: 最好但最复杂的可能是带有各种身份验证方法的WS- Security。但是它是最复杂的,并且对企业环境有利。它允许您创建端到端身份验证,并且有很多选项。您可以在简单情况下使用Web服务安全性UsernameToken配置文件 我不知道您使用什么库,但是这是一篇不错的文章,介绍

  • SOAP请求有一个服务endpoint和一个xsd文件。但是,没有wsdl文件。我如何从这里手动生成soap请求(作为字符串的xml请求)并将其发送到服务endpoint? 我在SO上找到了类似的答案。但这是针对C#和. NET的,任何针对Java的想法都会受到高度赞赏。