【问题标题】:SoapServer send response without envelopeSoapServer 发送没有信封的响应
【发布时间】:2012-01-25 16:23:16
【问题描述】:

我想发送一个纯 xml 的肥皂响应,即没有肥皂信封。这是我目前的回应

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
   <SOAP-ENV:Body>
      <ns1:getMemberResponse>
         <User>
            <ValidationErrors/>
            <IsDeleted>false</IsDeleted>
            <ID>1691</ID>......

但是,这是我想发送的回复

<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ValidationErrors />
  <IsDeleted>false</IsDeleted>
  <ID>1691</ID>.....

有人有什么建议吗?

在此先感谢

【问题讨论】:

  • 如果你删除了soap信封,你的响应就不是soap-response,调用者使用soap客户端调用你的服务器,将无法理解响应。如果您不需要肥皂信封,只需摆脱肥皂的东西并使用类似休息的请求
  • 感谢您的回复@Francesco。在这种情况下,调用者是一个 .NET 应用程序。您是否建议我只打印出 XML?
  • 不,如果调用者使用soap-request,那么您必须使用soap-response进行回复。也许我不明白为什么你需要去掉你回复周围的肥皂信封。

标签: php xml soap soapserver


【解决方案1】:

SOAP 是一种协议,因此定义了通信格式(其中包括由EnvelopeBody 和可选的Header 组成的消息)。

如果您只是在没有Envelope 的情况下发回响应,则您违反了协议。您的客户(期望格式正确的 SOAP 响应)将失败。

如果您使用 SOAP Web 服务,则必须发送 Envelope

如果这对您来说很麻烦并且您只对有效负载感兴趣,那么RESTful web service 可能比 SOAP 更合适? It is for you to decide given your particular situation.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多