Comment envoyer une demande SOAP via Postman

j'essaie d'envoyer une requête SOAP via L'extension Postman chrome. Mon corps de la requête ressemble à ceci en Facteur:

<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>

Edit:

en cliquant sur le Generate Code bouton Facteur fournit l'extrait de code suivant:

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>

J'ai le service web en cours D'exécution dans Visual Studio et j'ai un point de rupture défini dans la méthode web qui est touchée de sorte que la demande atteint le point final.

la signature de la méthode web ressemble à ceci:

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

Mais GetCustomersRequest le paramètre est toujours nul.

GetCustomersRequest classe ressemble à ceci:

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;
}

une idée de pourquoi?

9
demandé sur matsr 2016-09-14 18:08:01

1 réponses

Il s'est avéré être assez simple en fin de compte. Tout ce que j'ai fait, c'est naviguer sur le service web, qui liste ensuite les paramètres disponibles. Clique ensuite sur l' GetCustomers lien. Qui montre un exemple du XML requis. Je l'ai ensuite utilisé comme base pour le corps de la demande dans Postman (vous pouvez noter que certains des namespaces sont différentes de ma première tentative).

en cliquant sur le Generate Code bouton en Facteur du produit est le suivant:

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>

quel atteint avec succès le point final mais cette fois le GetCustomersRequest le paramètre est rempli correctement!

7
répondu Simon Lomax 2018-03-26 12:59:40