1. 概述

在这篇文章中,我们将通过Postman发送一个SOAP请求。在此之前,我们需要将我们的Country SOAP服务的WSDL导入API平台。

2. 准备

在Postman中发出SOAP请求之前,我们需要一个功能完备的SOAP服务。运行完我们的Country SOAP服务后,其端点位于http://localhost:8080/ws,并且WSDL文件可以在http://localhost:8080/ws/countries.wsdl找到。

3. 从Postman测试SOAP请求

在Postman中测试我们的端点需要四个步骤。

3.1. 导入SOAP WSDL

自Postman 8.4.0起,我们可以直接导入我们的WSDL文件http://localhost:8080/ws/countries.wsdl到Postman。我们也可以导入名为countries.postman_collection的Postman集合。以下是使用WSDL创建新集合的步骤:

首先,点击Collections

接下来,提供URL导入我们的WSDL:

您还可以直接使用countries.wsdl文件进行导入。

WSDL中的服务已经被获取。我们将跳过高级设置,使用默认设置导入:

导入后,我们应该能看到所有的SOAP服务:

Postman已经为我们设置了每个请求的正确URL、内容类型和头信息。

3.2. 添加请求体数据

然后,让我们定制请求体,将国家名设为Spain,并在信封头中添加bαeldung命名空间:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:gs="http://www.baeldung.com/springsoap/gen">
    <soapenv:Header/>
    <soapenv:Body>
        <gs:getCountryRequest>
            <gs:name>Spain</gs:name>
        </gs:getCountryRequest>
    </soapenv:Body>
</soapenv:Envelope>

3.3. 设置请求头

通过导入WSDL,Postman已经为我们设置了合适的头信息。内容类型设置为text/xml,适用于我们的请求。与application/xml相比,text/xml更优。那些没有明确支持text/xml的MIME用户代理(或网络用户代理)会将其视为text/plain,例如,显示XML MIME实体作为纯文本。

如果请求需要其他内容类型,我们可以取消选中Postman自动添加的Content-Type头。然后,在新行中添加Content-Type键,并在值字段中输入新的内容类型名称。

如果服务返回500状态码,我们应该添加一个额外的头“SOAPAction: #POST”

3.4. 发送SOAP请求

最后,点击Send按钮调用SOAP服务。如果请求成功,Postman会在下方标签中显示包含西班牙信息的响应:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
    <ns2:getCountryResponse xmlns:ns2="http://www.baeldung.com/springsoap/gen">
        <ns2:country>
            <ns2:name>Spain</ns2:name>
            <ns2:population>46704314</ns2:population>
            <ns2:capital>Madrid</ns2:capital>
            <ns2:currency>EUR</ns2:currency>
        </ns2:country>
    </ns2:getCountryResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Postman控制台的输出如下:

SOAP 控制台

4. 总结

在这篇文章中,我们学习了如何通过Postman发送SOAP请求。我们首先了解了如何将WSDL导入Postman。然后,我们成功地向国家服务发送了一个请求。如常,代码可在GitHub上找到。