.net 动态调用webService
2009-06-24 21:52
381 查看
说明:
1.MySer为
<appSettings>
<add key="MySer" value="http://192.168.2.25/WebSer/Service.asmx"/>
</appSettings>
2.命名空间"UserService"自己指定
3.Service为WebService中的类
4.HelloWorld为方法
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();//获取服务器证书策略 调用https的webservies时用,结合最后一段代码
this.Label1.Text=(string)InvokeWebservice(ConfigurationManager.AppSettings["MySer"].ToString(), "UseService", "Service", "HelloWorld", null);
}
public static object InvokeWebservice(string url, string @namespace, string classname, string methodname, object[] args)
{
try
{
System.Net.WebClient wc = new System.Net.WebClient();
System.IO.Stream stream = wc.OpenRead(url + "?WSDL");
System.Web.Services.Description.ServiceDescription sd = System.Web.Services.Description.ServiceDescription.Read(stream);
System.Web.Services.Description.ServiceDescriptionImporter sdi = new System.Web.Services.Description.ServiceDescriptionImporter();
sdi.AddServiceDescription(sd, "", ""); //将sd描述导入到sdi中
System.CodeDom.CodeNamespace cn = new System.CodeDom.CodeNamespace(@namespace);
System.CodeDom.CodeCompileUnit ccu = new System.CodeDom.CodeCompileUnit();
ccu.Namespaces.Add(cn);
sdi.Import(cn, ccu);
Microsoft.CSharp.CSharpCodeProvider csc = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler icc = csc.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters cplist = new System.CodeDom.Compiler.CompilerParameters();
cplist.GenerateExecutable = false;
cplist.GenerateInMemory = true;
cplist.ReferencedAssemblies.Add("System.dll");
cplist.ReferencedAssemblies.Add("System.XML.dll");
cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
cplist.ReferencedAssemblies.Add("System.Data.dll");
System.CodeDom.Compiler.CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
if (true == cr.Errors.HasErrors)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
{
sb.Append(ce.ToString());
sb.Append(System.Environment.NewLine);
}
throw new Exception(sb.ToString());
}
System.Reflection.Assembly assembly = cr.CompiledAssembly;
Type t = assembly.GetType(@namespace + "." + classname, true, true);
object obj = Activator.CreateInstance(t);
System.Reflection.MethodInfo mi = t.GetMethod(methodname);
return mi.Invoke(obj, args);
}
catch (Exception ex)
{
throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
}
}
}
//调用https的wenservices时用用,结合第一段代码
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy //验证服务器证书
{
public TrustAllCertificatePolicy()
{ }
public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert, WebRequest req, int problem)
{
return true;//如果应遵守此证书,则为 true;否则为 false。
}
}
1.MySer为
<appSettings>
<add key="MySer" value="http://192.168.2.25/WebSer/Service.asmx"/>
</appSettings>
2.命名空间"UserService"自己指定
3.Service为WebService中的类
4.HelloWorld为方法
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();//获取服务器证书策略 调用https的webservies时用,结合最后一段代码
this.Label1.Text=(string)InvokeWebservice(ConfigurationManager.AppSettings["MySer"].ToString(), "UseService", "Service", "HelloWorld", null);
}
public static object InvokeWebservice(string url, string @namespace, string classname, string methodname, object[] args)
{
try
{
System.Net.WebClient wc = new System.Net.WebClient();
System.IO.Stream stream = wc.OpenRead(url + "?WSDL");
System.Web.Services.Description.ServiceDescription sd = System.Web.Services.Description.ServiceDescription.Read(stream);
System.Web.Services.Description.ServiceDescriptionImporter sdi = new System.Web.Services.Description.ServiceDescriptionImporter();
sdi.AddServiceDescription(sd, "", ""); //将sd描述导入到sdi中
System.CodeDom.CodeNamespace cn = new System.CodeDom.CodeNamespace(@namespace);
System.CodeDom.CodeCompileUnit ccu = new System.CodeDom.CodeCompileUnit();
ccu.Namespaces.Add(cn);
sdi.Import(cn, ccu);
Microsoft.CSharp.CSharpCodeProvider csc = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler icc = csc.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters cplist = new System.CodeDom.Compiler.CompilerParameters();
cplist.GenerateExecutable = false;
cplist.GenerateInMemory = true;
cplist.ReferencedAssemblies.Add("System.dll");
cplist.ReferencedAssemblies.Add("System.XML.dll");
cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
cplist.ReferencedAssemblies.Add("System.Data.dll");
System.CodeDom.Compiler.CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
if (true == cr.Errors.HasErrors)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
{
sb.Append(ce.ToString());
sb.Append(System.Environment.NewLine);
}
throw new Exception(sb.ToString());
}
System.Reflection.Assembly assembly = cr.CompiledAssembly;
Type t = assembly.GetType(@namespace + "." + classname, true, true);
object obj = Activator.CreateInstance(t);
System.Reflection.MethodInfo mi = t.GetMethod(methodname);
return mi.Invoke(obj, args);
}
catch (Exception ex)
{
throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
}
}
}
//调用https的wenservices时用用,结合第一段代码
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy //验证服务器证书
{
public TrustAllCertificatePolicy()
{ }
public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert, WebRequest req, int problem)
{
return true;//如果应遵守此证书,则为 true;否则为 false。
}
}
相关文章推荐
- .NET实现跨平台动态调用webservice(wcf)
- .Net动态调用webservice
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net动态调用WebService
- .Net下采用GET/POST/SOAP方式动态调用WebService
- .NET动态调用WebService
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net动态调用webservice
- .net 动态调用webservice
- .Net动态调用WebService
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .NET动态调用WebService并生成程序集 兼容集成java发布的webserive
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#)
- .Net 动态调用WebService
- .Net 下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#) [轉]Redfox