|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
语言是不是不是最重要的?web|静态///<summary>
///依据指定的信息,挪用远程WebService办法
///</summary>
///<paramname="url">WebService的http情势的地点</param>
///<paramname="namespace">欲挪用的WebService的定名空间</param>
///<paramname="classname">欲挪用的WebService的类名(不包含定名空间前缀)</param>
///<paramname="methodname">欲挪用的WebService的办法名</param>
///<paramname="args">参数列表</param>
///<returns>WebService的实行了局</returns>
///<remarks>
///假如挪用失利,将会抛出Exception。请挪用的时分,得当截获非常。
///非常信息大概会产生在两个中央:
///1、静态机关WebService的时分,CompileAssembly失利。
///2、WebService自己实行失利。
///</remarks>
///<example>
///<code>
///objectobj=InvokeWebservice("http://localhost/GSP_WorkflowWebservice/common.asmx","Genersoft.Platform.Service.Workflow","Common","GetToolType",newobject[]{"1"});
///</code>
///</example>
privateobjectInvokeWebservice(stringurl,string@namespace,stringclassname,stringmethodname,object[]args)
{
try
{
System.Net.WebClientwc=newSystem.Net.WebClient();
System.IO.Streamstream=wc.OpenRead(url+"?WSDL");
System.Web.Services.Description.ServiceDescriptionsd=System.Web.Services.Description.ServiceDescription.Read(stream);
System.Web.Services.Description.ServiceDescriptionImportersdi=newSystem.Web.Services.Description.ServiceDescriptionImporter();
sdi.AddServiceDescription(sd,"","");
System.CodeDom.CodeNamespacecn=newSystem.CodeDom.CodeNamespace(@namespace);
System.CodeDom.CodeCompileUnitccu=newSystem.CodeDom.CodeCompileUnit();
ccu.Namespaces.Add(cn);
sdi.Import(cn,ccu);
Microsoft.CSharp.CSharpCodeProvidercsc=newMicrosoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompilericc=csc.CreateCompiler();
System.CodeDom.Compiler.CompilerParameterscplist=newSystem.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.CompilerResultscr=icc.CompileAssemblyFromDom(cplist,ccu);
if(true==cr.Errors.HasErrors)
{
System.Text.StringBuildersb=newSystem.Text.StringBuilder();
foreach(System.CodeDom.Compiler.CompilerErrorceincr.Errors)
{
sb.Append(ce.ToString());
sb.Append(System.Environment.NewLine);
}
thrownewException(sb.ToString());
}
System.Reflection.Assemblyassembly=cr.CompiledAssembly;
Typet=assembly.GetType(@namespace+"."+classname,true,true);
objectobj=Activator.CreateInstance(t);
System.Reflection.MethodInfomi=t.GetMethod(methodname);
returnmi.Invoke(obj,args);
}
catch(Exceptionex)
{
thrownewException(ex.InnerException.Message,newException(ex.InnerException.StackTrace));
}
}
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。 |
|