【问题标题】:Problems with getting header field value from response + java web services从响应 + java Web 服务获取标头字段值的问题
【发布时间】:2013-02-07 12:52:12
【问题描述】:

我正在使用 NetBeans IDE 编写一个 Web 服务客户端。我已经使用 WSDL 添加了 web 服务源,对于其中一种方法,响应 POJO 类仅包含两个参数:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "WithdrawTicket")
public class WithdrawTicket {

@XmlAttribute(name = "firstName")
protected String firstName;
@XmlAttribute(name = "lastName")
protected String lastName;
... //getters and setters

response XML 在正文部分包含两个字段(名字和姓氏),还包含标题部分。标头部分包含用私钥和证书签名的 XML 正文以及正文的摘要值。我必须验证传入的 XML,我的问题是如何在 Header 部分获取字段值? 提前致谢!

【问题讨论】:

    标签: java web-services


    【解决方案1】:

    您可以定义一个 SOAP 处理程序来完成这项工作,或者只是在 SOAPMessage 实例上发出一个 .getHeader() 。 详细here

    【讨论】:

    • 谢谢!但我总是得到 MessageCreationException: 由于异常无法创建 SOAP 消息:XML 阅读器错误:javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] 消息:prolog 中不允许内容。我以为我必须向响应 POJO 类添加标头字段,似乎传入的消息本身已损坏并且无法解析。如何在解析之前处理 xml,只是删除 xml 中的所有无效字符(如果有)?谢谢!
    • 您的 SOAPHAndler 是否收到任何消息?或者你可以监控http流量吗?
    • 不,我想我没有收到任何消息给 SOAPHandler,(布尔)messagecontext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY) 值始终为真,如果 messageHandle 方法是,只需使用 System.out.println 检查它调用,并且所有消息都是通过https协议发送的,所以我无法读取传入的xml,即使我使用嗅探器。
    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多