C# 利用反射调用WebService时出现’参数计数不匹配。’错误,求解!

winfpt 2018-06-26 01:10:47
/// <summary>
/// 执行代理类指定方法,有返回值
/// </summary>
/// <param name="methodName">方法名称</param>
/// <param name="param">参数</param>
/// <returns>object</returns>
//public object ExecuteQuery(string methodName, object[] param)
public object ExecuteQuery(string methodName, object[] param)
{
object rtnObj = null;
//string[] args = new string[2];
//List<string> list = new List<string>();
//List<string> list1 = new List<string>();
//List<string> list2 = new List<string>();
//object[] obj = new object[3];

try
{
if (this._typeName == null)
{
//记录Web服务访问类名错误日志代码位置
throw new TypeLoadException("Web服务访问类名【" + this._wsdlName + "】不正确,请检查!");
}
...全文
507 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
本人QQ-554433626 2018-06-26
  • 打赏
  • 举报
回复
为啥构造函数传了个name = "Patient"; ExecuteQuery又传呢
winfpt 2018-06-26
  • 打赏
  • 举报
回复
晕,编辑不了了
winfpt 2018-06-26
  • 打赏
  • 举报
回复
一共就7个参数,怎么会出错呢?
winfpt 2018-06-26
  • 打赏
  • 举报
回复
patient.showTag = "str6";
patient.windowNum = "str7";

string[] str = new string[7];
//{ "dataSource:str1",
// "patientId:str2",
// "patientName:str3",
// "patientNum:str4",
// "sendDateTime:str5",
// "showTag:str6",
// "windowNum:str7" };
str[0] = "str1";
str[1] = "str2";
str[2] = "str3";
str[3] = "str4";
str[4] = "str5";
str[5] = "str6";
str[6] = "str7";
Patient[] pt = { patient };

string suc = (string)wsd.ExecuteQuery(name, str);

return suc;
}
qq_26006573 2018-06-26
  • 打赏
  • 举报
回复
调用方法如下:
/// <summary>
/// 动态webservice调用
/// </summary>
/// <returns>string</returns>
public string wsTest()
{
string url = "http://192.168.155.5:8080/Service.asmx?WSDL"; //wsdl地址
string name = "Patient"; //javaWebService开放的接口(方法名)
WebServiceProxy wsd = new WebServiceProxy(url, name);


patient.patientNum = "str4";
patient.sendDateTime = "str5";
patient.showTag = "str6";
patient.windowNum = "str7";

string[] str = new string[7];
//{ "dataSource:str1",
// "patientId:str2",
// "patientName:str3",
// "patientNum:str4",
// "sendDateTime:str5",
//
  • 打赏
  • 举报
回复
我给你顶一层让你继续发吧,但是你能不能用把代码括起来,不然看起来真的辣眼睛
winfpt 2018-06-26
  • 打赏
  • 举报
回复
调用方法如下:
/// <summary>
/// 动态webservice调用
/// </summary>
/// <returns>string</returns>
public string wsTest()
{
string url = "http://192.168.155.5:8080/Service.asmx?WSDL"; //wsdl地址
string name = "Patient"; //javaWebService开放的接口(方法名)
WebServiceProxy wsd = new WebServiceProxy(url, name);

Patient patient = new Patient();
patient.dataSource = "str1";
patient.patientId = "str2";
patient.patientName = "str3";
patient.patientNum = "str4";
patient.sendDateTime = "str5";
patient.showTag = "str6";
patient.windowNum = "str7";

string[] str = new string[7];
//{ "dataSource:str1",
// "patientId:str2",
// "patientName:str3",
// "patientNum:str4",
// "sendDateTime:str5",
//
winfpt 2018-06-26
  • 打赏
  • 举报
回复
return rtnObj;
}
winfpt 2018-06-26
  • 打赏
  • 举报
回复
//调用方法
MethodInfo mi = this._typeName.GetMethod(methodName);
if (mi == null)
{
//记录Web服务方法名错误日志代码位置
throw new TypeLoadException("Web服务访问方法名【" + methodName + "】不正确,请检查!");
}
try
{
if (param == null)
rtnObj = mi.Invoke(Instance, null);
else
{
rtnObj = mi.Invoke(Instance, new object[] { param });
}
}
catch (TypeLoadException tle)
{
//记录Web服务方法参数个数错误日志代码位置
throw new TypeLoadException("Web服务访问方法【" + methodName + "】参数个数不正确,请检查!", new TypeLoadException(tle.StackTrace));
}
}
catch (Exception ex)
{
//抛出错误信息
throw new Exception(ex.Message, new Exception(ex.StackTrace));
}

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧