我获得了 asmx endpoint ,无论好坏,该方法都不会返回任何内容:
使用svcutil.exe
生成代理和配置后,我调用该服务并执行以下方法:
// connect
WinnerSiteServiceSoapClient client = new WinnerSiteServiceSoapClient();
// send
client.CreateCompetitor("1", "2", "3", "4", "5", 6);
// disconnect
client.Close();
但是,正如服务文档所述,方法CreateCompetitor
会重新调整void
,如何确保成功调用并回答该方法?
点亮Fiddler,我可以看到我收到了HTTP 200
回复,但是,如何从代理对象中获得此回复?
答案 0 :(得分:0)
Nutshell:没有例外意味着成功请求。
代理类将您向服务发送请求的HTTP部分抽象出来,如您所知。这也意味着您将找不到与服务器返回的HTTP状态相对应的属性(除非您调整生成的代理类)。
当您通过代理类调用void WebMethod并且调用未失败时,这意味着服务器已成功接收它。如果服务器抛出异常(可能告诉您某些参数无效 - 虽然它应该返回false或某些XML说明,但这是设计问题),那么您的调用将因System.ServiceModel.FaultException而失败。
如果存在网络问题并且请求无法以某种方式到达服务器,那么您还将获得异常:System.ServiceModel.EndpointNotFoundException。
这两个异常都是由为您处理HTTP的代理类引发的。