2012-09-28 59 views
0

我想從c#桌面應用程序中使用php服務。我通過「添加服務引用」向我的項目添加了php服務,並且我看不到正確的響應那來自method.That是php服務wsdl;如何使用「添加服務引用」從Visual Studio中調用php服務

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

當我打電話從VS2010 ShowData方法通過「添加服務引用」響應類型是字符串[]和總是返回串[0]。除了我把這種方法與SoapUi.Return到同一個參數我作爲以下的結果;

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

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

其結果是有可能通過調用從VS2010這項服務 「添加服務引用」或者應該是什麼?

謝謝..

回答

0

據我可以看到WSDL和實際響應不匹配。要獲得響應,您希望修復WSDL或響應。

相關問題