当前位置:编程学习 > C#/ASP.NET >>

关于.net调用java开发的webservice的请教

求救!!
本人在用.net调用java开发的webservice 时遇到以下问题,现在请教高手!对方提供的WebService地址为:http://fai.ptc.com/Windchill/servlet/IE/tasks/com/infoengine/soap/GETWSDL.xml?CLASS=ext.fai.testing&SOAP_URI=http://fai.ptc.com/Windchill/servlet/RPC?WSDL,这个地址在地址栏打开会提示输入用户名及密码的页面,输入对方提供的用户名及密码之后会下载一个wsdl.xml文件,于是我才去如下的动态调用的方式:




WebClient web = new WebClient();
web.Credentials = new System.Net.NetworkCredential("对方提供的用户名", "密码");
Stream stream = web.OpenRead("http://fai.ptc.com/Windchill/servlet/IE/tasks/com/infoengine/soap/GETWSDL.xml?CLASS=ext.fai.testing&SOAP_URI=http://fai.ptc.com/Windchill/servlet/RPC?wsdl");


ServiceDescription description = ServiceDescription.Read(stream);


ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
importer.ProtocolName = "Soap";
importer.Style = ServiceDescriptionImportStyle.Client;


//importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
importer.AddServiceDescription(description, null, null);


CodeNamespace nmspace = new CodeNamespace();
CodeCompileUnit unit = new CodeCompileUnit();
unit.Namespaces.Add(nmspace);


ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");




CompilerParameters parameter = new CompilerParameters();
parameter.GenerateExecutable = false;
parameter.GenerateInMemory = true;
parameter.ReferencedAssemblies.Add("System.dll");
parameter.ReferencedAssemblies.Add("System.XML.dll");
parameter.ReferencedAssemblies.Add("System.Web.Services.dll");
parameter.ReferencedAssemblies.Add("System.Data.dll");


CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);
if (!result.Errors.HasErrors)
{
Assembly asm = result.CompiledAssembly;
Type t = asm.GetType("IESoapServlet");


object o = Activator.CreateInstance(t);






MethodInfo method = t.GetMethod("synchState");
string[] args = new string[2];
args[0] = "4";
args[1] = "6";
//程序可以执行到此处
string s = method.Invoke(o, args).ToString();//这一句报错
Label1.Text = s;
}




程序在动态下载wsdl文件,构建代理类、获取代理类的方法都是没问题的,但是执行这个方法的时候会爆出:需要权限认证 的错误


大家看看我的代码哪里有问题,还是对方发布有问题,谢谢大家。 --------------------编程问答-------------------- 看看java的webservice最终发送的soap格式是什么样子的,

然后后HttpWebRequest直接post对应格式的soap过去
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,