Server did not recognize the value of HTTP Header SOAPAction

在 Web 服务中进行 SOAP (Simple Object Access Protocol)通信时,SOAPAction 是重要的一个 HTTP 请求头部。它指定了请求中所使用的 SOAP 操作(operation),以及相应的命名空间(namespace)。如果服务器无法识别这个请求头,就会返回“Server did not recognize the value of HTTP Header SOAPAction”的错误信息。

错误原因

有几种常见的原因可能导致这个错误:

  1. SOAPAction 头部缺失或设置不正确:SOAPAction 必须是完全限定的操作名称和命名空间的组合,例如 "http://example.com/MyService/GetUserInfo"。如果 SOAPAction 设置不正确,服务器将无法识别请求的操作。
  2. 请求体格式错误:SOAP 请求必须遵循 XML 格式并符合约定的 schema。如果请求体格式不正确,服务器将无法解析请求。
  3. 代理服务器的问题:如果请求经过代理服务器,代理服务器可能会删除或更改 SOAPAction 头部,从而导致服务器无法解析请求。

解决方案

以下是几种可能的解决方案。

确认 SOAPAction 头部设置正确

首先,你需要确认 SOAPAction 头部被正确地设置。可以使用浏览器的开发者工具或者类似 Postman 的工具来检查请求头部,确保 SOAPAction 值是正确的。

确认请求体格式正确

如果 SOAPAction 头部设置正确,那么下一步就需要确认请求体格式正确。可以使用类似 XML 校验器或者 SOAP UI 的工具来检查请求体格式是否符合 schema。

确认代理服务器的问题

如果在代理服务器上有问题,可以尝试直接连接服务端,绕过代理服务器进行测试。如果错误仍然存在,那么问题可能出现在服务端。

示例代码

以下是一个简单的 Node.js 代码示例,用于发送包含正确 SOAPAction 头部的 SOAP 请求:

----- ------- - -------------------

----- ------- - -
    ---- -------------------------------
    ------- -------
    -------- -
        --------------- -------------------------
        ------------- ------------------------------------------
    --
    ----- ------------------ --------------------------------------------------------- -------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------
--

---------------- --------------- --------- ----- -
    ------------------
---

注意到示例中的 SOAPAction 头部与请求体中的操作名称和命名空间是匹配的。如果这个值不匹配,你将会遇到“Server did not recognize the value of HTTP Header SOAPAction”的错误信息。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26873