C#访问带有安全协议的Webservice(https、生成wsdl代理类)

1.最近公司上项目,其中有一个小栏目 是查询身份证的,就是输入身份证码和姓名返回你的地址和图片的这种,也就是公安部全国公民身份信息系统(NCIIS)我是第一次,中间有几个问题第一个难题是这样的,要验证证书,当时给文档的时候只有一个地址,也只有安装上了证书文件才能访问,基本的方法是这样的

      按上面写的把官方提共的地方输入到地址栏里,然后回车,然后会出现这个对话框,我们只要单击查看证书,就行了,在后面出现的界面 里单击安装就可以了

如果要导出则选择“复制到文件” ==下一步  “Base64编码x.509 (.cer)(s)”选择这一项下一步完成就OK了。

     然后把你的证书文件复制到一个位置方便使用。文件名假设为tingting.cer(cer表示证书文件);

  下面获取WSDL文件(C#):

//请求的地址
              HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.cnblogs.com/ ");
 
             //创建证书文件
             X509Certificate objx509 = new X509Certificate(Application.StartupPath + "\\tingting.cer");
 
             //添加到请求里
             request.ClientCertificates.Add(objx509);
 
             //User-AgentHTTP标头的值
             request.UserAgent = "Client Cert Sample";
             request.Method = "POST";
 
             //读返回的流
             StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());
 
             //把得到的WSDL文件放到一个richTextBox1
             this.richTextBox1.Text = reader.ReadToEnd();

 

 

 Application.StartupPath + "tingting.cer/"  这里就是我们刚才导出的证书文件的地址,当然我们在实际应用中要写成自己的才行;

request.UserAgent = "Client Cert Sample"; User-AgentHTTP标头的值这个可以参考这里  http://support.microsoft.com/kb/895971

下面是详细的代码:

 1 当 Web 服务器需要一个使用 HttpWebRequest 和 HttpWebResponse 类时,您可以发送客户端证书。 若要获取用于通过使用 HttpWebRequest 类发送客户端证书的证书,使用下列方法之一:
 方法 1
 使用 x509 证书 类来读取从.cer 文件的证书,然后将 ClientCertificates 属性设置。
 方法 2
 使用 CryptoAPI 调用来从证书存储获得证书,然后将 x509 证书 类设置为接收从证书存储区的证书。 然后,您可以设置 ClientCertificates 属性。
 回到顶端
 发送客户端证书的要求
 可与 ASP.NET 应用程序时确保完成以下要求:
 LOCAL_MACHINE 注册表配置单元中并不在 CURRENT_USER 注册表配置单元中,必须安装客户端证书。 若要确认客户端证书的安装位置,请按照下列步骤操作:
 单击 开始、 单击 运行,键入 mmc,然后单击 确定。
 在 文件 菜单上单击 添加/删除管理单元。
 在 添加/删除管理单元 对话框中单击 添加。
 在 添加独立管理单元 对话框中单击 证书,然后单击 添加。
 在 证书管理单元 对话框中单击 计算机帐户,然后单击 下一步
 在 选择计算机 对话框中单击 完成。
 在 添加独立管理单元 对话框中单击 关闭,然后单击 确定。
 展开 证书 (本地计算机),展开 个人,然后单击 证书。
 在右窗格中应列出客户端证书。
 您必须授予 ASP.NET 用户客户端证书的私钥的帐户权限。 若要为 ASP.NET 用户授予客户端证书的私钥的帐户权限,使用 WinHttpCertCfg.exe 工具。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
 823193  ( http://support.microsoft.com/kb/823193/ ) 如何获得 Windows HTTP 5.1 证书和跟踪工具
 有关如何使用此工具,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站的详细信息:
 WinHttpCertCfg.exe,证书配置工具 http://msdn2.microsoft.com/en-us/library/aa384088.aspx ( http://msdn2.microsoft.com/en-us/library/aa384088.aspx)
 回到顶端
 使用.cer 文件
 方法 1 是易于使用,但方法要求您具有一个.cer 文件。 如果您没有安装的.cer 文件,使用 Microsoft Internet 资源管理器导出.cer 文件。
 
 下列源代码介绍如何获取证书从一个.cer 文件您可以使用 HttpWebRequest class.
 //Uncomment the following code if you need a proxy. The boolean true is used to bypass the local address.
 //WebProxy proxyObject = new WebProxy("Your Proxy value",true);
 //GlobalProxySelection.Select = proxyObject;
 
 // Obtain the certificate.
 try
 {
     //You must change the path to point to your .cer file location.
     X509Certificate Cert = X509Certificate.CreateFromCertFile("C:\\mycert.cer");
     // Handle any certificate errors on the certificate from the server.
     ServicePointManager.CertificatePolicy = new CertPolicy();
     // You must change the URL to point to your Web server.
     HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(" https://YourServer/sample.asp");
     Request.ClientCertificates.Add(Cert);
     Request.UserAgent = "Client Cert Sample";
     Request.Method = "GET";
     HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
     // Print the repsonse headers.
     Console.WriteLine("{0}",Response.Headers);
     Console.WriteLine();
     // Get the certificate data.
     StreamReader sr = new StreamReader(Response.GetResponseStream(), Encoding.Default);
     int count;
     char [] ReadBuf = new char[1024];
     do
     {
         count = sr.Read(ReadBuf, 0, 1024);
         if (0 != count)
         {
             Console.WriteLine(new string(ReadBuf));
         }
                        
     }while(count > 0);
 }
 catch(Exception e)
 {
     Console.WriteLine(e.Message);
 }
    
 
 //Implement the ICertificatePolicy interface.
 class CertPolicy: ICertificatePolicy
 {
     public bool CheckValidationResult(ServicePoint srvPoint,
 X509Certificate certificate, WebRequest request, int certificateProblem)
     {
         // You can do your own certificate checking.
         // You can obtain the error values from WinError.h.
 
         // Return true so that any certificate will work with this sample.
         return true;
     }
 }
 
 
 
 使用 CryptoAPI 调用
 如果您必须获取该证书从证书存储区,CryptoAPI 函数用于在获取该证书,然后将其存储在 x509 证书 类对象。 X509CertificateCollection 类枚举存储区中的所有证书,然后将其置于 X509CertificateCollection 类对象中。
 
 如果想获得特定的证书,必须更改类代码,以使用 CertFindCertificateInStore 函数获取特定的证书。 Wincrypt.h 的文件中声明该函数。 鎴栬 € 咃,您可以枚举 X509CertificateCollection 函数,以查找所需的证书。
 
 下面的代码示例使用从 CertEnumCertificatesInStore 函数返回集合中的第一个证书
 using System;
 using System.Net;
 using System.IO;
 using System.Text;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 using System.Runtime.InteropServices;
 
 namespace SelectClientCert
 {
     /// Sample that describes how how to select client cetificate and send it to the server.
 
     class MyCerts{
 
         private static int CERT_STORE_PROV_SYSTEM = 10;
         private static int CERT_SYSTEM_STORE_CURRENT_USER = (1 << 16);
         ///private static int CERT_SYSTEM_STORE_LOCAL_MACHINE = (2 << 16);
 
         [DllImport("CRYPT32", EntryPoint="CertOpenStore", CharSet=CharSet.Unicode, SetLastError=true)]
         public static extern IntPtr CertOpenStore(
             int storeProvider, int encodingType,
             int hcryptProv, int flags, string pvPara);
 
         [DllImport("CRYPT32", EntryPoint="CertEnumCertificatesInStore", CharSet=CharSet.Unicode, SetLastError=true)]
         public static extern IntPtr CertEnumCertificatesInStore(
             IntPtr storeProvider,
             IntPtr prevCertContext);
 
         [DllImport("CRYPT32", EntryPoint="CertCloseStore", CharSet=CharSet.Unicode, SetLastError=true)]
         public static extern bool CertCloseStore(
             IntPtr storeProvider,
             int flags);
        
         X509CertificateCollection m_certs;
 
         public MyCerts(){
             m_certs = new X509CertificateCollection();
         }
 
         public int Init()
         {
             IntPtr storeHandle;
             storeHandle = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER, "MY");
             IntPtr currentCertContext;
             currentCertContext = CertEnumCertificatesInStore(storeHandle, (IntPtr)0);
             int i = 0;
             while (currentCertContext != (IntPtr)0)
             {
                 m_certs.Insert(i++, new X509Certificate(currentCertContext));
                 currentCertContext = CertEnumCertificatesInStore(storeHandle, currentCertContext);
             }
             CertCloseStore(storeHandle, 0);
 
             return m_certs.Count;
         }
        
         public X509Certificate this [int index]
         {
             get
             {
                 // Check the index limits.
                 if (index < 0 || index > m_certs.Count)
                     return null;
                 else
                     return m_certs[index];
             }
         }
     };
     class MyHttpResource
     {
         String m_url;
 
         public MyHttpResource(string url){
             m_url = url;
         }
 
         public void GetFile(){
 
             HttpWebResponse  result = null;
 
             try{
            
                 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(m_url);
                 req.Credentials  = CredentialCache.DefaultCredentials;
 
                 ///Method1
                 //req.ClientCertificates.Add(X509Certificate.CreateFromCertFile("D:\\Temp\\cert\\c1.cer"));
        
                 ///Method2
                 ///Uses interop services
                 MyCerts mycert = new MyCerts();
                 if(mycert.Init() > 0)
                     req.ClientCertificates.Add(mycert[0]);
 
                 result = (HttpWebResponse)req.GetResponse();
                
                 Stream ReceiveStream = result.GetResponseStream();
                 Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
 
                 StreamReader sr = new StreamReader( ReceiveStream, encode );
                 Console.WriteLine("\r\nResponse stream received");
 
                 Char[] read = new Char[256];
                 int count = sr.Read( read, 0, 256 );
 
                 Console.WriteLine("HTTP Response...\r\n");
                 while (count > 0)
                 {
                     String str = new String(read, 0, count);
                     Console.Write(str);
                     count = sr.Read(read, 0, 256);
                 }
 
             }
             catch(WebException e)
             {
            
                 Console.WriteLine("\r\nError:");
                 #if (DEBUG)
                     Console.WriteLine(e.ToString());
                 #else       
                     Console.WriteLine(e.Message);                
                 #endif
 
             }
             finally
             {
                 if ( result != null ) {
                     result.Close();
                 }
             }
                
         }
    
     }
 
     class CertSample
     {
         static void Main(string[] args)
         {
             try
             {
                 if (args.Length < 1)
                 {
                     Console.WriteLine("No url is entered to download, returning.\n");
                     Console.WriteLine("Usage: CertSample <urltoget>\n");
                     Console.WriteLine("  e.g: CertSample https://servername \n");
 
                     return;
                 }
 
                 MyHttpResource hr = new MyHttpResource(args[0]);
                 hr.GetFile();
             }
             catch(Exception e)
             {
                 Console.WriteLine(e.ToString());
             }
             return;
         }
     }
 }
 
 
 
 参考有关详细信息请访问下面的 Microsoft 开发网络 (MSDN) 网站: x509 证书类 http://msdn2.microsoft.com/en-us/...有关详细信息请访问下面的 Microsoft 开发网络 (MSDN)
 
 x509 证书类
  http://msdn2.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate(vs.71).aspx ( http://msdn2.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate(vs.71).aspx)
 
 
得到WSDL的XML文档如下:
 
<?xml version="1.0" encoding="UTF-8"?>
  <wsdl:definitions targetNamespace=" https://www.cnblogs.com/ " xmlns:tns=" https://api.nciic.org.cn/nciicGetCondition" xmlns:wsdlsoap=" http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12=" http://https//www.cnblogs.com/ 2003/05/soap-envelope" xmlns:xsd=" http://https//www.cnblogs.com/ 2001/XMLSchema" xmlns:soapenc11=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12=" http://https//www.cnblogs.com/ 2003/05/soap-encoding" xmlns:soap11=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl=" http://schemas.xmlsoap.org/wsdl/">
   <wsdl:types>
 <xsd:schema xmlns:xsd=" http://home.cnblogs.com/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace=" https://api.nciic.org.cn/nciicGetCondition">
 <xsd:element name="nciicDiscern">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicDiscernResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCheckChina">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCheckChinaResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicGetCondition">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicGetConditionResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicExactSearch">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicExactSearchResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCourt">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCourtResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicBirthplaceCompare">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicBirthplaceCompareResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicAddrExactSearch">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicAddrExactSearchResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCheck">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCheckResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCompare">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCompareResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCombineSearch">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="inLicense" nillable="true" type="xsd:string"/>
 <xsd:element maxOccurs="1" minOccurs="1" name="inConditions" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 <xsd:element name="nciicCombineSearchResponse">
 <xsd:complexType>
 <xsd:sequence>
 <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
 </xsd:element>
 </xsd:schema>
   </wsdl:types>
   <wsdl:message name="nciicCombineSearchResponse">
     <wsdl:part name="parameters" element="tns:nciicCombineSearchResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCheckChinaRequest">
     <wsdl:part name="parameters" element="tns:nciicCheckChina">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicBirthplaceCompareResponse">
     <wsdl:part name="parameters" element="tns:nciicBirthplaceCompareResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicAddrExactSearchRequest">
     <wsdl:part name="parameters" element="tns:nciicAddrExactSearch">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCheckRequest">
     <wsdl:part name="parameters" element="tns:nciicCheck">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicExactSearchResponse">
     <wsdl:part name="parameters" element="tns:nciicExactSearchResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCompareResponse">
     <wsdl:part name="parameters" element="tns:nciicCompareResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCheckResponse">
     <wsdl:part name="parameters" element="tns:nciicCheckResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCourtRequest">
     <wsdl:part name="parameters" element="tns:nciicCourt">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicExactSearchRequest">
     <wsdl:part name="parameters" element="tns:nciicExactSearch">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicBirthplaceCompareRequest">
     <wsdl:part name="parameters" element="tns:nciicBirthplaceCompare">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicAddrExactSearchResponse">
     <wsdl:part name="parameters" element="tns:nciicAddrExactSearchResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCombineSearchRequest">
     <wsdl:part name="parameters" element="tns:nciicCombineSearch">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicDiscernRequest">
     <wsdl:part name="parameters" element="tns:nciicDiscern">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCourtResponse">
     <wsdl:part name="parameters" element="tns:nciicCourtResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCompareRequest">
     <wsdl:part name="parameters" element="tns:nciicCompare">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicDiscernResponse">
     <wsdl:part name="parameters" element="tns:nciicDiscernResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicGetConditionRequest">
     <wsdl:part name="parameters" element="tns:nciicGetCondition">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicGetConditionResponse">
     <wsdl:part name="parameters" element="tns:nciicGetConditionResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="nciicCheckChinaResponse">
     <wsdl:part name="parameters" element="tns:nciicCheckChinaResponse">
     </wsdl:part>
   </wsdl:message>
   <wsdl:portType name="nciicGetConditionPortType">
     <wsdl:operation name="nciicDiscern">
       <wsdl:input name="nciicDiscernRequest" message="tns:nciicDiscernRequest">
     </wsdl:input>
       <wsdl:output name="nciicDiscernResponse" message="tns:nciicDiscernResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCheckChina">
       <wsdl:input name="nciicCheckChinaRequest" message="tns:nciicCheckChinaRequest">
     </wsdl:input>
       <wsdl:output name="nciicCheckChinaResponse" message="tns:nciicCheckChinaResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicGetCondition">
       <wsdl:input name="nciicGetConditionRequest" message="tns:nciicGetConditionRequest">
     </wsdl:input>
       <wsdl:output name="nciicGetConditionResponse" message="tns:nciicGetConditionResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicExactSearch">
       <wsdl:input name="nciicExactSearchRequest" message="tns:nciicExactSearchRequest">
     </wsdl:input>
       <wsdl:output name="nciicExactSearchResponse" message="tns:nciicExactSearchResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCourt">
       <wsdl:input name="nciicCourtRequest" message="tns:nciicCourtRequest">
     </wsdl:input>
       <wsdl:output name="nciicCourtResponse" message="tns:nciicCourtResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicBirthplaceCompare">
       <wsdl:input name="nciicBirthplaceCompareRequest" message="tns:nciicBirthplaceCompareRequest">
     </wsdl:input>
       <wsdl:output name="nciicBirthplaceCompareResponse" message="tns:nciicBirthplaceCompareResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicAddrExactSearch">
       <wsdl:input name="nciicAddrExactSearchRequest" message="tns:nciicAddrExactSearchRequest">
     </wsdl:input>
       <wsdl:output name="nciicAddrExactSearchResponse" message="tns:nciicAddrExactSearchResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCheck">
       <wsdl:input name="nciicCheckRequest" message="tns:nciicCheckRequest">
     </wsdl:input>
       <wsdl:output name="nciicCheckResponse" message="tns:nciicCheckResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCompare">
       <wsdl:input name="nciicCompareRequest" message="tns:nciicCompareRequest">
     </wsdl:input>
       <wsdl:output name="nciicCompareResponse" message="tns:nciicCompareResponse">
     </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCombineSearch">
       <wsdl:input name="nciicCombineSearchRequest" message="tns:nciicCombineSearchRequest">
     </wsdl:input>
       <wsdl:output name="nciicCombineSearchResponse" message="tns:nciicCombineSearchResponse">
     </wsdl:output>
     </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="nciicGetConditionHttpBinding" type="tns:nciicGetConditionPortType">
     <wsdlsoap:binding style="document" transport=" >
     <wsdl:operation name="nciicDiscern">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicDiscernRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicDiscernResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCheckChina">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicCheckChinaRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicCheckChinaResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicGetCondition">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicGetConditionRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicGetConditionResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicExactSearch">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicExactSearchRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicExactSearchResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCourt">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicCourtRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicCourtResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicBirthplaceCompare">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicBirthplaceCompareRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicBirthplaceCompareResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicAddrExactSearch">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicAddrExactSearchRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicAddrExactSearchResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCheck">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicCheckRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicCheckResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCompare">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicCompareRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicCompareResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="nciicCombineSearch">
       <wsdlsoap:operation soapAction=""/>
       <wsdl:input name="nciicCombineSearchRequest">
         <wsdlsoap:body use="literal"/>
       </wsdl:input>
       <wsdl:output name="nciicCombineSearchResponse">
         <wsdlsoap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="nciicGetCondition">
     <wsdl:port name="nciicGetConditionHttpPort" binding="tns:nciicGetConditionHttpBinding">
       <wsdlsoap:address location="
>
     </wsdl:port>
   </wsdl:service>
 </wsdl:definitions>
 

 我们得把它转化成一个类文件才行,

方法很简单,这是在我知道 了之后才这样讲的,呵呵

利用wsdl.exe生成webservice代理类:

根据提供的wsdl生成webservice代理类

1、开始->程序->Visual Studio 2008 命令提示

2、输入如下红色标记部分

D:\Program Files\Microsoft Visual Studio 8\VC>wsdl /language:c# /n:TestDemo /out:d:\text\TestService.cs D:\text\TestService.wsdl

在d:/text下就会产生一个TestService.cs 文件

注意:D:\text\TestService.wsdl 是wsdl路径,可以是url路径

如果 你想知道WSDL文件是怎么使用的话,直接写WSDL回车就可以,会出显所有的说明

 

还有一个方法更方便

首先打开Visual Studio 2008,选择菜单"工具"-"外部工具"打开外部工具对话框,如图

,单击“添加”按钮添加新工具,然后在“标题”行中输入"WSDL生成代理类","命令"行中输入"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe"(wsdl.exe文件的路径),"参数"行中输入"/l:cs  /out:", 单击"初始目录"行右边的三角按钮选择"项目录",勾选"使用输出窗口"和"提示输入参数",然后确定保存。

     再打开菜单"工具"可以看到多了一个"WSDL生成代理类"菜单,这时先选定一个存放生成的代理类的文件夹(必须位于并且包含于当前解决方案中),然后单击"WSDL生成代理类"菜单,弹出如下对话框,然后你只需在"/l:cs  /out:"后面空一格(必须空一格)再粘贴WebService文件的http地址如

https://www.cnblogs.com/ ?wsdl,单击"确定"看看发生了什么?是的,输出窗口会显示生成了一个类及其存放的位置,看看是不是你选定的文件夹,找到这个路径看看是不是有一个类,你会发现这个类跟上面使用命令行生成的类一模一样,个人觉得这样操作起来更简单一点。

 

 

 上面是来自http://blog.sina.com.cn/s/blog_48964b120100fz14.html 在这里谢谢了

生成的类文件里会包括 方法使用和怎么样和服务器沟通,我们只要调用 方法就要可以了,

类文件如下

 

 //------------------------------------------------------------------------------
  // <auto-generated>
 //     此代码由工具生成。
 //     运行库版本:2.0.50727.1873
 //
 //     对此文件的更改可能会导致不正确的行为,并且如果
 //     重新生成代码,这些更改将会丢失。
 // </auto-generated>
 //------------------------------------------------------------------------------
 
 //
 // 此源代码由 wsdl 自动生成, Version=2.0.50727.1432。
 //
 namespace WSDLServices
 {
     using System.Diagnostics;
     using System.Web.Services;
     using System.ComponentModel;
     using System.Web.Services.Protocols;
     using System;
     using System.Xml.Serialization;
    
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     [System.Web.Services.WebServiceBindingAttribute(Name="nciicGetConditionHttpBinding", Namespace="https://http://www.cnblogs.com/ /nciicGetCondition")]
     public partial class nciicGetCondition : System.Web.Services.Protocols.SoapHttpClientProtocol {
        
         private System.Threading.SendOrPostCallback nciicDiscernOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicCheckChinaOperationCompleted;
        
         private System.Threading.SendOrPostCallback CallnciicGetConditionOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicExactSearchOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicCourtOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicBirthplaceCompareOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicAddrExactSearchOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicCheckOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicCompareOperationCompleted;
        
         private System.Threading.SendOrPostCallback nciicCombineSearchOperationCompleted;
        
         /// <remarks/>
         public nciicGetCondition() {
             this.Url = "http://http://www.cnblogs.com/ /nciic_ws/services/nciicGetCondition";
         }
        
         /// <remarks/>
         public event nciicDiscernCompletedEventHandler nciicDiscernCompleted;
        
         /// <remarks/>
         public event nciicCheckChinaCompletedEventHandler nciicCheckChinaCompleted;
        
         /// <remarks/>
         public event CallnciicGetConditionCompletedEventHandler CallnciicGetConditionCompleted;
        
         /// <remarks/>
         public event nciicExactSearchCompletedEventHandler nciicExactSearchCompleted;
        
         /// <remarks/>
         public event nciicCourtCompletedEventHandler nciicCourtCompleted;
        
         /// <remarks/>
         public event nciicBirthplaceCompareCompletedEventHandler nciicBirthplaceCompareCompleted;
        
         /// <remarks/>
         public event nciicAddrExactSearchCompletedEventHandler nciicAddrExactSearchCompleted;
        
         /// <remarks/>
         public event nciicCheckCompletedEventHandler nciicCheckCompleted;
        
         /// <remarks/>
         public event nciicCompareCompletedEventHandler nciicCompareCompleted;
        
         /// <remarks/>
         public event nciicCombineSearchCompletedEventHandler nciicCombineSearchCompleted;
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicDiscern([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicDiscern", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicDiscern(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicDiscern", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicDiscern(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicDiscernAsync(string inLicense, string inConditions) {
             this.nciicDiscernAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicDiscernAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicDiscernOperationCompleted == null)) {
                 this.nciicDiscernOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicDiscernOperationCompleted);
             }
             this.InvokeAsync("nciicDiscern", new object[] {
                         inLicense,
                         inConditions}, this.nciicDiscernOperationCompleted, userState);
         }
        
         private void OnnciicDiscernOperationCompleted(object arg) {
             if ((this.nciicDiscernCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicDiscernCompleted(this, new nciicDiscernCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicCheckChina([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicCheckChina", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicCheckChina(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicCheckChina", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicCheckChina(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicCheckChinaAsync(string inLicense, string inConditions) {
             this.nciicCheckChinaAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicCheckChinaAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicCheckChinaOperationCompleted == null)) {
                 this.nciicCheckChinaOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicCheckChinaOperationCompleted);
             }
             this.InvokeAsync("nciicCheckChina", new object[] {
                         inLicense,
                         inConditions}, this.nciicCheckChinaOperationCompleted, userState);
         }
        
         private void OnnciicCheckChinaOperationCompleted(object arg) {
             if ((this.nciicCheckChinaCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicCheckChinaCompleted(this, new nciicCheckChinaCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestElementName="nciicGetCondition", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseElementName="nciicGetConditionResponse", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string CallnciicGetCondition([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense) {
             object[] results = this.Invoke("CallnciicGetCondition", new object[] {
                         inLicense});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginCallnciicGetCondition(string inLicense, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("CallnciicGetCondition", new object[] {
                         inLicense}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndCallnciicGetCondition(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void CallnciicGetConditionAsync(string inLicense) {
             this.CallnciicGetConditionAsync(inLicense, null);
         }
        
         /// <remarks/>
         public void CallnciicGetConditionAsync(string inLicense, object userState) {
             if ((this.CallnciicGetConditionOperationCompleted == null)) {
                 this.CallnciicGetConditionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCallnciicGetConditionOperationCompleted);
             }
             this.InvokeAsync("CallnciicGetCondition", new object[] {
                         inLicense}, this.CallnciicGetConditionOperationCompleted, userState);
         }
        
         private void OnCallnciicGetConditionOperationCompleted(object arg) {
             if ((this.CallnciicGetConditionCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.CallnciicGetConditionCompleted(this, new CallnciicGetConditionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicExactSearch([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicExactSearch", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicExactSearch(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicExactSearch", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicExactSearch(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicExactSearchAsync(string inLicense, string inConditions) {
             this.nciicExactSearchAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicExactSearchAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicExactSearchOperationCompleted == null)) {
                 this.nciicExactSearchOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicExactSearchOperationCompleted);
             }
             this.InvokeAsync("nciicExactSearch", new object[] {
                         inLicense,
                         inConditions}, this.nciicExactSearchOperationCompleted, userState);
         }
        
         private void OnnciicExactSearchOperationCompleted(object arg) {
             if ((this.nciicExactSearchCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicExactSearchCompleted(this, new nciicExactSearchCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicCourt([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicCourt", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicCourt(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicCourt", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicCourt(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicCourtAsync(string inLicense, string inConditions) {
             this.nciicCourtAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicCourtAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicCourtOperationCompleted == null)) {
                 this.nciicCourtOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicCourtOperationCompleted);
             }
             this.InvokeAsync("nciicCourt", new object[] {
                         inLicense,
                         inConditions}, this.nciicCourtOperationCompleted, userState);
         }
        
         private void OnnciicCourtOperationCompleted(object arg) {
             if ((this.nciicCourtCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicCourtCompleted(this, new nciicCourtCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicBirthplaceCompare([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicBirthplaceCompare", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicBirthplaceCompare(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicBirthplaceCompare", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicBirthplaceCompare(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicBirthplaceCompareAsync(string inLicense, string inConditions) {
             this.nciicBirthplaceCompareAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicBirthplaceCompareAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicBirthplaceCompareOperationCompleted == null)) {
                 this.nciicBirthplaceCompareOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicBirthplaceCompareOperationCompleted);
             }
             this.InvokeAsync("nciicBirthplaceCompare", new object[] {
                         inLicense,
                         inConditions}, this.nciicBirthplaceCompareOperationCompleted, userState);
         }
        
         private void OnnciicBirthplaceCompareOperationCompleted(object arg) {
             if ((this.nciicBirthplaceCompareCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicBirthplaceCompareCompleted(this, new nciicBirthplaceCompareCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicAddrExactSearch([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicAddrExactSearch", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicAddrExactSearch(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicAddrExactSearch", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicAddrExactSearch(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicAddrExactSearchAsync(string inLicense, string inConditions) {
             this.nciicAddrExactSearchAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicAddrExactSearchAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicAddrExactSearchOperationCompleted == null)) {
                 this.nciicAddrExactSearchOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicAddrExactSearchOperationCompleted);
             }
             this.InvokeAsync("nciicAddrExactSearch", new object[] {
                         inLicense,
                         inConditions}, this.nciicAddrExactSearchOperationCompleted, userState);
         }
        
         private void OnnciicAddrExactSearchOperationCompleted(object arg) {
             if ((this.nciicAddrExactSearchCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicAddrExactSearchCompleted(this, new nciicAddrExactSearchCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped
             )]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicCheck([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicCheck", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicCheck(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicCheck", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicCheck(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicCheckAsync(string inLicense, string inConditions) {
             this.nciicCheckAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicCheckAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicCheckOperationCompleted == null)) {
                 this.nciicCheckOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicCheckOperationCompleted);
             }
             this.InvokeAsync("nciicCheck", new object[] {
                         inLicense,
                         inConditions}, this.nciicCheckOperationCompleted, userState);
         }
        
         private void OnnciicCheckOperationCompleted(object arg) {
             if ((this.nciicCheckCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicCheckCompleted(this, new nciicCheckCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicCompare([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicCompare", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicCompare(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicCompare", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicCompare(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicCompareAsync(string inLicense, string inConditions) {
             this.nciicCompareAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicCompareAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicCompareOperationCompleted == null)) {
                 this.nciicCompareOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicCompareOperationCompleted);
             }
             this.InvokeAsync("nciicCompare", new object[] {
                         inLicense,
                         inConditions}, this.nciicCompareOperationCompleted, userState);
         }
        
         private void OnnciicCompareOperationCompleted(object arg) {
             if ((this.nciicCompareCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicCompareCompleted(this, new nciicCompareCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", ResponseNamespace="https://http://www.cnblogs.com/ /nciicGetCondition", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
         [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)]
         public string nciicCombineSearch([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inLicense, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string inConditions) {
             object[] results = this.Invoke("nciicCombineSearch", new object[] {
                         inLicense,
                         inConditions});
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public System.IAsyncResult BeginnciicCombineSearch(string inLicense, string inConditions, System.AsyncCallback callback, object asyncState) {
             return this.BeginInvoke("nciicCombineSearch", new object[] {
                         inLicense,
                         inConditions}, callback, asyncState);
         }
        
         /// <remarks/>
         public string EndnciicCombineSearch(System.IAsyncResult asyncResult) {
             object[] results = this.EndInvoke(asyncResult);
             return ((string)(results[0]));
         }
        
         /// <remarks/>
         public void nciicCombineSearchAsync(string inLicense, string inConditions) {
             this.nciicCombineSearchAsync(inLicense, inConditions, null);
         }
        
         /// <remarks/>
         public void nciicCombineSearchAsync(string inLicense, string inConditions, object userState) {
             if ((this.nciicCombineSearchOperationCompleted == null)) {
                 this.nciicCombineSearchOperationCompleted = new System.Threading.SendOrPostCallback(this.OnnciicCombineSearchOperationCompleted);
             }
             this.InvokeAsync("nciicCombineSearch", new object[] {
                         inLicense,
                         inConditions}, this.nciicCombineSearchOperationCompleted, userState);
         }
        
         private void OnnciicCombineSearchOperationCompleted(object arg) {
             if ((this.nciicCombineSearchCompleted != null)) {
                 System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                 this.nciicCombineSearchCompleted(this, new nciicCombineSearchCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
             }
         }
        
         /// <remarks/>
         public new void CancelAsync(object userState) {
             base.CancelAsync(userState);
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicDiscernCompletedEventHandler(object sender, nciicDiscernCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicDiscernCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicDiscernCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicCheckChinaCompletedEventHandler(object sender, nciicCheckChinaCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicCheckChinaCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicCheckChinaCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void CallnciicGetConditionCompletedEventHandler(object sender, CallnciicGetConditionCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class CallnciicGetConditionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal CallnciicGetConditionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicExactSearchCompletedEventHandler(object sender, nciicExactSearchCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicExactSearchCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicExactSearchCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicCourtCompletedEventHandler(object sender, nciicCourtCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicCourtCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicCourtCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicBirthplaceCompareCompletedEventHandler(object sender, nciicBirthplaceCompareCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicBirthplaceCompareCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicBirthplaceCompareCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicAddrExactSearchCompletedEventHandler(object sender, nciicAddrExactSearchCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicAddrExactSearchCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicAddrExactSearchCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicCheckCompletedEventHandler(object sender, nciicCheckCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicCheckCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicCheckCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicCompareCompletedEventHandler(object sender, nciicCompareCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicCompareCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicCompareCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     public delegate void nciicCombineSearchCompletedEventHandler(object sender, nciicCombineSearchCompletedEventArgs e);
    
     /// <remarks/>
     [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")]
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     public partial class nciicCombineSearchCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
         private object[] results;
        
         internal nciicCombineSearchCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
                 base(exception, cancelled, userState) {
             this.results = results;
         }
        
         /// <remarks/>
         public string Result {
             get {
                 this.RaiseExceptionIfNecessary();
                 return ((string)(this.results[0]));
             }
         }
     }
 }

 

有了这个类,最后一步就是实现调取数据了,

 

 try
            {
                //授权文件内容建议以后放在数据库或是文件里而且要加密
                string inliance = @"文件内容";

                //生成的WSDL类()
                nciicGetCondition objText = new nciicGetCondition();

                //基础URL建议加密和写在文件中
                objText.Url = "https://www.cnblogs.com/ ";

                //编码
                objText.RequestEncoding =  Encoding.UTF8;

                //创建证书文件
                X509Certificate objx509 = new X509Certificate(Application.StartupPath + "\\tingting.cer");
               
                //证书
                objText.ClientCertificates.Add(objx509);

                //方式可有可无
                objText.UserAgent = "Client Cert Sample";

                //读XML文件
                string inConditions = File.ReadAllText(Application.StartupPath + "\\XMLFile1.xml");

                //Text文件
                this.richTextBox1.Text = objText.nciicCheck(inliance, inConditions);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

 

到这里我们已经和服务器沟通上了。好,到此,获取数据ing……

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值