如何连接到WSDL Web服务?

时间:2015-01-08 05:49:43

标签: web-services http soap wsdl

以下是WSDL Web服务xml结构:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5. -->
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5. -->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://dispproj/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://dispproj/" name="DipService">
    <types>
        <xsd:schema>
            <xsd:import namespace="http://dispproj/" schemaLocation="http://www.example.com:8888/OfficeSRV/DipPort?xsd=1" />
        </xsd:schema>
    </types>
    <message name="getDisp">
        <part name="parameters" element="tns:getDisp" />
    </message>
    <message name="getDispResponse">
        <part name="parameters" element="tns:getDispResponse" />
    </message>
    <message name="getActiveoffice">
        <part name="parameters" element="tns:getActiveoffice" />
    </message>
    <message name="getActiveofficeResponse">
        <part name="parameters" element="tns:getActiveofficeResponse" />
    </message>
    <portType name="Dip">
        <operation name="getDisp">
            <input message="tns:getDisp" />
            <output message="tns:getDispResponse" />
        </operation>
        <operation name="getActiveoffice">
            <input message="tns:getActiveoffice" />
            <output message="tns:getActiveofficeResponse" />
        </operation>
    </portType>
    <binding name="DipPortBinding" type="tns:Dip">
        <soap12:binding transport="http://www.w3.org/2003/05/soap/bindings/HTTP/" style="document" />
        <operation name="getDisp">
            <soap12:operation soapAction="" />
            <input>
                <soap12:body use="literal" />
            </input>
            <output>
                <soap12:body use="literal" />
            </output>
        </operation>
        <operation name="getActiveoffice">
            <soap12:operation soapAction="" />
            <input>
                <soap12:body use="literal" />
            </input>
            <output>
                <soap12:body use="literal" />
            </output>
        </operation>
    </binding>
    <service name="DipService">
        <port name="DipPort" binding="tns:DipPortBinding">
            <soap12:address location="http://www.example.com:8888/OfficeSRV/DipPort" />
        </port>
    </service>
</definitions>

以下是架构:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://dispproj/" version="1.0" targetNamespace="http://dispproj/">
    <xs:element name="getActiveoffice" type="tns:getActiveoffice" />
    <xs:element name="getActiveofficeResponse" type="tns:getActiveofficeResponse" />
    <xs:element name="getDisp" type="tns:getDisp" />
    <xs:element name="getDispResponse" type="tns:getDispResponse" />
    <xs:complexType name="getDisp">
        <xs:sequence>
            <xs:element name="arg0" type="xs:int" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getDispResponse">
        <xs:sequence>
            <xs:element name="return" type="tns:disp" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="disp">
        <xs:sequence>
            <xs:element name="disps" type="xs:anyType" nillable="true" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getActiveoffice">
        <xs:sequence />
    </xs:complexType>
    <xs:complexType name="getActiveofficeResponse">
        <xs:sequence>
            <xs:element name="return" type="tns:activeOffices" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="activeOffices">
        <xs:sequence>
            <xs:element name="offADDRESS" type="xs:string" minOccurs="0" />
            <xs:element name="offEMAIL" type="xs:string" minOccurs="0" />
            <xs:element name="offFAX" type="xs:string" minOccurs="0" />
            <xs:element name="offLIECENE" type="xs:string" minOccurs="0" />
            <xs:element name="offMobile" type="xs:string" minOccurs="0" />
            <xs:element name="offPHONE" type="xs:string" minOccurs="0" />
            <xs:element name="offid" type="xs:int" />
            <xs:element name="offname" type="xs:string" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>

我正在使用Chrome的Postman(http请求/响应客户端):

请求网址:http://www.example.com:8888/OfficeSRV/DipPort

请求正文(我在使用http://tomi.vanek.sk/index.php?page=wsdl-viewer进行测试后学习了这个正文):

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://dispproj/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
        <mns1:getActiveoffice xmlns:mns1="http://dispproj/" />
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

在线WSDL客户端成功地重新获得了结果,但是当我使用Postman尝试了请求的URL和正文时,我遇到了以下问题:

415: Unsupported Media Type

我的请求中是否遗漏了一些HTTP Request Headers

1 个答案:

答案 0 :(得分:1)

经过多次尝试,我发现我必须提供以下HTTP请求标头:

内容类型 - &gt; Content-Type:application / soap + xml; charset = UTF-8

我想通过使用:SoapUI