阅读全文并下载例子:http://www.cckan.net/forum.php?mod=viewthread&tid=213
1.最近公司上项目,其中有一个小栏目 是查询身份证的,就是输入身份证码和姓名返回你的地址和图片的这种,也就是公安部全国公民身份信息系统(NCIIS)不知道 有朋友写过没有,我是第一次,中间有几个问题第一个难题是这样的,要验证证书,当时给文档的时候只有一个地址,也只有安装上了证书文件才能访问,基本的方法是这样的
按上面写的把官方提共的地方输入到地址栏里,然后回车,然后会出现这个对话框,我们只要单击查看证书,就行了,在后面出现的界面 里单击安装就可以了
如果要导出则选择“复制到文件” ==下一步 “Base64编码x.509 (.cer)(s)”选择这一项下一步完成就OK了。
然后把你的证书文件复制到一个位置方便使用。文件名假设为tingting.cer(cer表示证书文件);
像这样的程序一般只提共Java版的代码,那我们c#的怎么办呢,哎,不过经过今天下午的努力总算是出了,现在给大家分享一下经验;
看Java的代码不太明白 ,不过也能知道一些,现在是Wsdl文件要怎么得到呢?我是这样写的
HttpWebRequest request = (HttpWebRequest)WebRequest.Create( " https://www.cnblogs.com/sufei " );
// 创建证书文件
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
使用 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文件是得如下
< wsdl:definitions targetNamespace ="https://www.cnblogs.com/sufei" xmlns:tns ="https://api.nciic.org.cn/nciicGetCondition" xmlns:wsdlsoap ="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12 ="http://https://www.cnblogs.com/sufei2003/05/soap-envelope" xmlns:xsd ="http://https://www.cnblogs.com/sufei2001/XMLSchema" xmlns:soapenc11 ="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12 ="http://https://www.cnblogs.com/sufei2003/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://https://www.cnblogs.com/sufei2001/XMLSchema" 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 ="http://schemas.xmlsoap.org/soap/http" />
< 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 ="http://api.nciic.org.cn/nciic_ws/services/nciicGetCondition" />
</ wsdl:port >
</ wsdl:service >
</ wsdl:definitions >
可是我们想一下这是一个Xml文件,我们应该怎么使用他呢,如果 是Webservce相信大家都 知道 怎么使用,直接添加引用就可以,但这里是一个Wsdl的XMl文件,我们得把他转化成一个类文件才行,
方法很简单,这是在我知道 了之后才这样讲的,呵呵
利用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路径:https://www.cnblogs.com/sufei/?wsdl
如果 你想知道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/sufei?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/sufei/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/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseElementName = " nciicGetConditionResponse " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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/sufei/nciicGetCondition " , ResponseNamespace = " https://http://www.cnblogs.com/sufei/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 ]));
}
}
}
}
有这里有这样一个问题,验证证书时可能会不通过,那我们可以让它回调验证,基本上就可以无视证书了,看我修改的代码就行了,有注释
直接修改如下方法就行了,
///<remarks/>
public nciicGetCondition()
{
this.Url = "http://api.nciic.org.cn/nciic_ws/services/nciicGetCondition";
//验证服务器证书回调自动验证
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
}
//这个方法 是新加的直接添加进来就行了
private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
// trust any certificate!!!
System.Console.WriteLine("Warning, trust any certificate");
//为了通过证书验证,总是返回true
return true;
}
有了这个类,最后一步就是怎么样来实现调取数据了,
{
// 授权文件内容建议以后放在数据库或是文件里而且要加密
string inliance = @" 文件内容 " ;
// 生成的WSDL类()
nciicGetCondition objText = new nciicGetCondition();
// 基础URL建议加密和写在文件中
objText.Url = " https://www.cnblogs.com/sufei " ;
// 编码
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);
}
到这里我们已经和服务器沟通上了,把回的结果集的格式 跟文档中的一样,我们自己去解析就行了,这里为了保证公司的利益就不再多写了。,,,,,,,,,,,,,,