我正在尝试通过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
按钮可提供以下代码段:
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方法中设置了一个断点,该断点正被命中,因此请求到达 endpoints .
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;
}
知道为什么吗?
1 回答
事实证明最终是非常直截了当的 . 我所做的只是浏览到Web服务,然后列出可用的 endpoints . 然后单击
GetCustomers
链接 . 其中显示了所需XML的示例 . 然后我用它作为Postman中请求体的基础(你可能会注意到namespaces
中的一些与我原来的尝试不同) .单击Postman中的
Generate Code
按钮会产生以下结果:哪个成功到达 endpoints ,但这次
GetCustomersRequest
参数填充正确!