【问题标题】:How to send SOAP request via Postman如何通过 Postman 发送 SOAP 请求
【发布时间】:2017-01-22 11:10:36
【问题描述】:

我正在尝试通过 Postman chrome 扩展发送 SOAP 请求。我的请求正文在 Postman 中如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://partnerapi.somewhere.com/">
  <soapenv:Body>
    <ns1:GetCustomers>
      <GetCustomersRequest>
        <APIKey>SECRET</APIKey>
        <PartnerKey></PartnerKey>    
        <SearchText></SearchText>
        <ItemsPerPage>50</ItemsPerPage>
        <PageNumber>1</PageNumber>
        <Fields></Fields>
        <OrderBy></OrderBy>
      </GetCustomersRequest> 
    </ns1:GetCustomers>
  </soapenv:Body>
</soapenv:Envelope>

编辑:

单击 Postman 中的Generate Code 按钮提供以下 sn-p:

POST /PartnerAPI.asmx HTTP/1.1
Host: localhost:3000
Content-Type: text/xml
SOAPAction: http://partnerapi.somewhere.com/GetCustomers
Cache-Control: no-cache
Postman-Token: 1af78251-9d36-0c94-d0e3-21f7e37ffc41
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://partnerapi.somewhere.com/">
  <soapenv:Body>
    <ns1:GetCustomers>
      <GetCustomersRequest>
        <APIKey>SECRET</APIKey>
        <PartnerKey></PartnerKey>    
        <SearchText></SearchText>
        <ItemsPerPage>50</ItemsPerPage>
        <PageNumber>1</PageNumber>
        <Fields></Fields>
        <OrderBy></OrderBy>
      </GetCustomersRequest> 
    </ns1:GetCustomers>
  </soapenv:Body>
</soapenv:Envelope>

我在 Visual Studio 中运行了 Web 服务,并且我在正在命中的 Web 方法中设置了一个断点,因此请求到达了端点。

Web 方法签名如下所示:

[WebMethod]
public CustomersObject GetCustomers(RequestObjects.GetCustomersRequest GetCustomersRequest)

GetCustomersRequest 参数始终为NULL。

GetCustomersRequest 类如下所示:

public class GetCustomersRequest {
    public string APIKey;
    public string PartnerKey;
    public string SearchText;
    public int ItemsPerPage = 50;
    public int PageNumber = 1;

    public string Fields;
    public string OrderBy;
}

知道为什么吗?

【问题讨论】:

  • 你展示了你的请求正文,但是你的请求的其余部分呢!在 Postman 中,如果您单击“生成代码”并将其粘贴到此处,可能会更有帮助。
  • @SiKing 我按照建议添加了“生成代码”按钮生成的 sn-p

标签: web-services soap postman


【解决方案1】:

最终结果证明是相当直截了当的。我所做的只是浏览到 Web 服务,然后它会列出可用的端点。然后点击GetCustomers 链接。其中显示了所需的 XML 示例。然后,我将其用作 Postman 中请求正文的基础(您可能会注意到某些 namespaces 与我最初的尝试不同)。

在 Postman 中单击 Generate Code 按钮会产生以下结果:

POST /PartnerAPI.asmx HTTP/1.1
Host: localhost:53355
Content-Type: text/xml; charset=utf-8
SOAPAction: http://partnerapi.somewhere.com/GetCustomers
Cache-Control: no-cache
Postman-Token: 914d2152-9063-ff57-91a0-e567714c2d44
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetCustomers xmlns="http://partnerapi.somewhere.com/">
      <GetCustomersRequest>
        <APIKey>SECRET</APIKey>
        <SearchText></SearchText>
        <ItemsPerPage>10</ItemsPerPage>
        <PageNumber>1</PageNumber>
        <Fields></Fields>
        <OrderBy></OrderBy>
      </GetCustomersRequest>
    </GetCustomers>
  </soap:Body>
</soap:Envelope>

成功到达端点,但这次GetCustomersRequest 参数填充正确!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多