Skip to main content
 首页 » 编程设计

c#之如何在 C# 中使用 Web 上不存在的 wsdl 文件

2024年02月04日30kerrycode

我正在尝试将带有 SOAP 消息的服务应用到我的 visual studio 项目中。 他们给了我一些说明,我在 stackoverflow 上看到我必须在 visual studio 中使用 wsdl 和 xsd 文件,以便它可以创建我需要的所有类。 问题是,当我尝试将 wsdl 文件添加为服务引用时,它说该文件不存在。我使用提供的 URL 自己搜索它,但它确实不存在。 有什么办法让我可以使用它。

Below is the WSDL statement: 
https://www1.gsis.gr/wsicispay/rmt_ws?wsdl 
<definitions targetNamespace="http://remittance_ws/rmt_ws.wsdl" name="rmt_ws" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://remittance_ws/rmt_ws.wsdl" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> 
<types> 
<xsd:schema> 
<xsd:import namespace="http://remittance_ws/rmt_ws.wsdl" 
schemaLocation="https://www1.gsis.gr/wsicispay/rmt_ws?xsd=1"/> 
</xsd:schema> 
</types> 
<message name="remittanceXml"> 
<part name="parameters" element="tns:remittanceXml"/> 
</message> 
<message name="remittanceXmlResponse"> 
<part name="parameters" element="tns:remittanceXmlResponse"/> 
</message> 
<message name="UnsupportedEncodingException"> 
<part name="fault" element="tns:UnsupportedEncodingException"/> 
</message> 
<portType name="rmt_ws"> 
<operation name="remittanceXml"> 
<input message="tns:remittanceXml"/> 
<output message="tns:remittanceXmlResponse"/> 
<fault message="tns:UnsupportedEncodingException" name="UnsupportedEncodingException"/> 
</operation> 
</portType> 
<binding name="rmt_wsBinding" type="tns:rmt_ws"> 
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
<operation name="remittanceXml"> 
<soap:operation soapAction=""/> 
<input> 
<soap:body use="literal"/> 
</input> 
<output> 
<soap:body use="literal"/> 
</output> 
<fault name="UnsupportedEncodingException"> 
<soap:fault name="UnsupportedEncodingException" use="literal"/> 
</fault> 
</operation> 
</binding> 
<service name="rmt_ws"> 
<port name="rmt_ws" binding="tns:rmt_wsBinding"> 
<soap:address location="https://www1.gsis.gr/wsicispay/rmt_ws"/> 
</port> 
</service> 
</definitions> 

这是xsd

 https://www1.gsis.gr/wsicispay/rmt_ws?xsd=1 
<xs:schema version="1.0" targetNamespace="http://remittance_ws/rmt_ws.wsdl" 
xmlns:tns="http://remittance_ws/rmt_ws.wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="UnsupportedEncodingException" type="tns:UnsupportedEncodingException"/> 
<xs:element name="remittanceXml" type="tns:remittanceXml"/> 
<xs:element name="remittanceXmlResponse" type="tns:remittanceXmlResponse"/> 
<xs:complexType name="remittanceXml"> 
<xs:sequence> 
<xs:element name="inputXML" type="xs:string" minOccurs="0"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="remittanceXmlResponse"> 
<xs:sequence> 
<xs:element name="return" type="xs:string" minOccurs="0"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="UnsupportedEncodingException"> 
<xs:sequence> 
<xs:element name="message" type="xs:string" minOccurs="0"/> 
</xs:sequence> 
</xs:complexType> 
</xs:schema> 
Δείγμα μηνύματος: 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:rmt="http://remittance_ws/rmt_ws.wsdl"> 
<soapenv:Header/> 
<soapenv:Body> 
<rmt:remittanceXml> 
<inputXML>&lt;remittance&gt;&lt;wsTin&gt;Tin&lt;/wsTin&gt;&lt;wsUser&gt;Username&lt;/wsUser&gt;&lt;wsPswd 
&gt;Pswd&lt;/wsPswd&gt;&lt;contain&gt;&lt;bmrn&gt;16GRIMXXXX00001746&lt;/bmrn&gt;&lt;blrn&gt;TESTFOR1& 
lt;/blrn&gt;&lt;bcnt&gt;1&lt;/bcnt&gt;&lt;bafm&gt;099099099&lt;/bafm&gt;&lt;/contain&gt;&lt;contain&gt;&lt;bmr 
n&gt;16GRIMXXXX00001720&lt;/bmrn&gt;&lt;blrn&gt;TESTFOR2&lt;/blrn&gt;&lt;bcnt&gt;2&lt;/bcnt&gt;&lt;bafm& 
gt;099099099&lt;/bafm&gt;&lt;/contain&gt;&lt;contain&gt;&lt;bmrn&gt;16GRIMXXXX00001738&lt;/bmrn&gt;&lt;bl 
rn&gt;TESTFOR2&lt;/blrn&gt;&lt;bcnt&gt;2&lt;/bcnt&gt;&lt;bafm&gt;099099099&lt;/bafm&gt;&lt;/contain&gt;&lt;/ 
remittance&gt;</inputXML> 
</rmt:remittanceXml> 
</soapenv:Body> 
</soapenv:Envelope> 

这些在他们给我的 pdf 文件中。

编辑: 如果我将它添加为来自服务引用的文件,它会创建引用 ePayments 而不会创建 .cs 文件。 当我添加引用时,它只给我一个服务 rmt_ws,它有一个操作 remitanceXML,没有别的。 我不知道这是否正确,我应该如何使用它

请您参考如下方法:

我将 xsd 部分复制到 wsdl 中,visual studio 使用一个操作生成服务以发送输入 XML 并返回另一个 XML。我希望这会有所帮助。

rmt_ws.wsdl:

    <?xml version="1.0" encoding="utf-8"?> 
    <definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://remittance_ws/rmt_ws.wsdl" name="rmt_ws" targetNamespace="http://remittance_ws/rmt_ws.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/"> 
        <types> 
            <xs:schema targetNamespace="http://remittance_ws/rmt_ws.wsdl" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
      <xs:element name="UnsupportedEncodingException" type="tns:UnsupportedEncodingException" /> 
      <xs:element name="remittanceXml" type="tns:remittanceXml" /> 
      <xs:element name="remittanceXmlResponse" type="tns:remittanceXmlResponse" /> 
      <xs:complexType name="remittanceXml"> 
        <xs:sequence> 
          <xs:element minOccurs="0" name="inputXML" type="xs:string" /> 
        </xs:sequence> 
      </xs:complexType> 
      <xs:complexType name="remittanceXmlResponse"> 
        <xs:sequence> 
          <xs:element minOccurs="0" name="return" type="xs:string" /> 
        </xs:sequence> 
      </xs:complexType> 
      <xs:complexType name="UnsupportedEncodingException"> 
        <xs:sequence> 
          <xs:element minOccurs="0" name="message" type="xs:string" /> 
        </xs:sequence> 
      </xs:complexType> 
    </xs:schema> 
  </types> 
  <message name="remittanceXml"> 
    <part name="parameters" element="tns:remittanceXml" /> 
  </message> 
  <message name="remittanceXmlResponse"> 
    <part name="parameters" element="tns:remittanceXmlResponse" /> 
  </message> 
  <message name="UnsupportedEncodingException"> 
    <part name="fault" element="tns:UnsupportedEncodingException" /> 
  </message> 
  <portType name="rmt_ws"> 
    <operation name="remittanceXml"> 
      <input message="tns:remittanceXml" /> 
      <output message="tns:remittanceXmlResponse" /> 
      <fault name="UnsupportedEncodingException" message="tns:UnsupportedEncodingException" /> 
    </operation> 
  </portType> 
  <binding name="rmt_wsBinding" type="tns:rmt_ws"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
    <operation name="remittanceXml"> 
      <soap:operation soapAction="" /> 
      <input> 
        <soap:body use="literal" /> 
      </input> 
      <output> 
        <soap:body use="literal" /> 
      </output> 
      <fault name="UnsupportedEncodingException"> 
        <soap:fault use="literal" name="UnsupportedEncodingException" namespace="" /> 
      </fault> 
    </operation> 
  </binding> 
  <service name="rmt_ws"> 
    <port name="rmt_ws" binding="tns:rmt_wsBinding"> 
      <soap:address location="https://www1.gsis.gr/wsicispay/rmt_ws" /> 
    </port> 
  </service> 
</definitions>