.net调用PHP写的webservice问题

[复制链接]
查看11 | 回复4 | 2021-1-27 07:20:01 | 显示全部楼层 |阅读模式
RT,PHP的webservice接口是:http://user.tlx.gov.cn/services/tonglingzbContent.php?wsdl
我的代码是
publicclassWebServiceHelper
{
#region动态调用WebService动态调用地址
///
///动态调用web服务
///
///WSDL服务地址
///方法名
///参数
///
publicstaticobjectInvokeWebService(stringurl,stringmethodname,object[]args)
{
returnWebServiceHelper.InvokeWebService(url,null,methodname,args);
}
///
///动态调用web服务
///
///WSDL服务地址
///服务接口类名
///方法名
///参数值
///
publicstaticobjectInvokeWebService(stringurl,stringclassname,stringmethodname,object[]args)
{
string@namespace="EnterpriseServerBase.WebService.DynamicWebCalling";
if((classname==null)||(classname==""))
{
classname=WebServiceHelper.GetWsClassName(url);
}
//try
//{
//获取WSDL
WebClientwc=newWebClient();
Streamstream=wc.OpenRead(url+"?wsdl");
ServiceDescriptionsd=ServiceDescription.Read(stream);
ServiceDescriptionImportersdi=newServiceDescriptionImporter();
sdi.AddServiceDescription(sd,"","");
CodeNamespacecn=newCodeNamespace(@namespace);
//生成客户端代理类代码
CodeCompileUnitccu=newCodeCompileUnit();
ccu.Namespaces.Add(cn);
sdi.Import(cn,ccu);
CSharpCodeProvidericc=newCSharpCodeProvider();
//设定编译参数
CompilerParameterscplist=newCompilerParameters();
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");
//编译代理类
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);
}
privatestaticstringGetWsClassName(stringwsUrl)
{
string[]parts=wsUrl.Split('/');
string[]pps=parts[parts.Length-1].Split('.');
returnpps[0];
}
#endregion
}
出现的问题:System.TypeLoadException:Couldnotloadtype
'EnterpriseServerBase.WebService.DynamicWebCalling.tonglingzbContent'fromassembly'nqoo0cfw,Version=0.0.0.0,
Culture=neutral,PublicKeyToken=null'.
atSystem.Reflection.RuntimeAssembly.GetType(RuntimeAssemblyassembly,Stringname,BooleanthrowOnError,
BooleanignoreCase,ObjectHandleOnStacktype)
atSystem.Reflection.RuntimeAssembly.GetType(Stringname,BooleanthrowOnError,BooleanignoreCase)
atEpoint.JSGCZtbMis_TL.Bizlogic.WebServiceHelper.InvokeWebService(Stringurl,Stringclassname,String
methodname,Object[]args)
atss.WebServiceHelper.InvokeWebService(Stringurl,Stringmethodname,Object[]
args)
atss.Commons.YAQGGTS.SendData(ObjTuiSongMsgobjTuiSongMsg,String&errMsg)
atss.Commons.YAQGGTS.PublishZBGG_JSGC(StringssGuid)
请问该如何修改代码
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
@microtry,@Return_false,@starfd大神求带啊
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
可以添加web引用的话就通过代理的方式,否则就通过Post报文的方式呗
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
@
引用2楼starfd的回复:可以添加web引用的话就通过代理的方式,否则就通过Post报文的方式呗
添加web引用的话,出现下面这个问题
System.Net.WebException:Therequestfailedwiththeerrormessage:
--

302Found

Found
Thedocumenthasmovedhere.

--.
atSystem.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessagemessage,WebResponseresponse,StreamresponseStream,BooleanasyncCall)
atSystem.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(StringmethodName,Object[]parameters)
atEpoint.JSGCZtbMis_TL.Bizlogic.YAQ_GGTS.tonglingzbContentwsdl.Push(Stringkey,StringcurTime,StringBizID,Stringuser_id,Stringbranch_id,Stringchannel_id,Stringtitle,Stringprefix_title,Stringsubhead,Stringdescription,Stringbody,Stringtitle_bold,Stringtitle_color,Stringthumb_name,Stringtemplate,Stringrelease_date,Stringtag,Stringauthor,Stringcopy_from,Stringlink_url,Stringstatus,Stringobj)
atEpoint.JSGCZtbMis_TL.Bizlogic.Commons.YAQGGTS.SendData(ObjTuiSongMsgobjTuiSongMsg,String&errMsg)
完全不知道该怎么做啊
回复

使用道具 举报

千问 | 2021-1-27 07:20:01 | 显示全部楼层
服务引用删除掉,再引用一次。
感觉你把事情搞复杂了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行