简体   繁体   中英

How to call php Service from visual studio with “Add Service Reference”

I want to consume a php service from c# desktop application.I added php service to my project via "Add Service Reference" and I can't see correct response that come from method.That is php service wsdl;

    <?xml version="1.0" encoding="UTF-8"?>
<definitions
    xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:tns = "urn:Invest"
    xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/"
    xmlns = "http://schemas.xmlsoap.org/wsdl/"
    targetNamespace = "urn:Invest">
    <types>
        <xsd:schema elementFormDefault = "qualified" targetNamespace = "urn:Invest">
            <xsd:import namespace = "http://schemas.xmlsoap.org/soap/encoding/"/>
            <xsd:import namespace = "http://schemas.xmlsoap.org/wsdl/"/>
            <xsd:complexType name = "ReturnItems">
                <xsd:sequence>
                    <xsd:element
                        name = "itemName"
                        type = "xsd:string"
                        minOccurs = "0"
                        maxOccurs = "unbounded"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:schema>
    </types>
    <message name = "ShowDataRequest">
        <part name = "no" type = "xsd:string"/>
        <part name = "user_name" type = "xsd:string"/>
    </message>
    <message name = "ShowDataResponse">
        <part name = "return" type = "tns:ReturnItems"/>
    </message>
    <portType name = "InvestPortType">
        <operation name = "ShowData">
            <input message = "tns:ShowDataRequest"/>
            <output message = "tns:ShowDataResponse"/>
        </operation>
    </portType>
    <binding name = "InvestBinding" type = "tns:InvestPortType">
        <soap:binding style = "document" transport = "http://schemas.xmlsoap.org/soap/http"/>
        <operation name = "ShowData">
            <soap:operation soapAction = "urn:Invest#ShowData" style = "rpc"/>
            <input>
                <soap:body use = "literal" namespace = "urn:Invest"/>
            </input>
            <output>
                <soap:body use = "literal" namespace = "urn:Invest"/>
            </output>
        </operation>
    </binding>
    <service name = "Invest">
        <port name = "InvestPort" binding = "tns:InvestBinding">
            <soap:address location = "http://test.com.tr/service.php"/>
        </port>
    </service>
</definitions>

When I call ShowData method from vs2010 via"Add Service Reference" response type is String[] and always return string[0].In addition to I call this method with the same parameter in SoapUi.Return to me as a result of the following;

Request SoapUi:

<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn = "urn:Invest">
<soapenv:Header/>
<soapenv:Body>
    <urn:ShowData>
        <no>475</no>
        <user_name>7302AEKI</user_name>
    </urn:ShowData>
</soapenv:Body>

Response SoapUi:

<SOAP-ENV:Envelope
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
    <ns1:ShowDataResponse xmlns:ns1 = "urn:Invest">
        <return>
            <item>
                <TAP>
                    <kod>
                        <item>768</item>
                    </kod>
                </TAP>
            </item>
            <item>
                <BASV>
                    <SUB>10</SUB>
                </BASV>
            </item>
            <item>
                <BASV>
                    <SIRK/>
                </BASV>
            </item>
            <item>
                <BASV>
                    <BASV_NO/>
                </BASV>
            </item>
            <item>
                <aaa>bbb</aaa>
            </item>
        </return>
    </ns1:ShowDataResponse>
</SOAP-ENV:Body>

As a result is it possible to call this service from VS2010 via "Add Service Reference" or what should be?

Thanks..

As far as I can see the WSDL and the actual response do not match. To get the response you expect fix either the WSDL or the response.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM