我是SOAP和C#的新手,但我试图通过构建一个简单的SOAP Web客户端来学习。我创建了一个带有单个按钮和列表框的Web表单。单击该按钮会向Web服务发送SOAP调用,返回一个简单的结果并显示在列表框中。该方法(getCountRegisteredSubscribers)不需要输入并返回int。接下来,我想使用另一个名为getSubscriber的方法返回有关订阅者的信息。此方法确实需要输入(订户名称)并将返回多个结果。我正在努力通过传递用户名并将结果列在我的列表框中来打电话,非常感谢任何建议!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
namespace WebApplication2
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
WebApplication2.WebReference.SMFAdmin ws = new WebApplication2.WebReference.SMFAdmin();
ListBox1.Items.Add("Request Submitted");
ListBox1.Items.Add(""+ ws.getCountRegisteredSubscribers());
//ListBox1.Items.Add("" + ws.getSubscribers("subname"));
}
}
}
更新
我添加了一个变量来存储订阅者名称,但是,它在我的列表框中返回“WebApplicaiton2.WebReference.Subscriber”。任何想法如何解决这一问题?每个订阅者都有几个项目,如何让它们列在我的列表框中?提前谢谢。
namespace WebApplication2
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
var subName = "subscriber 1";
WebApplication2.WebReference.SMFAdmin ws = new WebApplication2.WebReference.SMFAdmin();
ListBox1.Items.Add("Request Submitted");
ListBox1.Items.Add(""+ ws.getCountRegisteredSubscribers());
ListBox1.Items.Add("" + ws.getSubscriber(subName));
}
}
}
答案 0 :(得分:0)
您只需循环遍历结果并将其插入列表框。
protected void Button1_Click(object sender, EventArgs e)
{
WebApplication2.WebReference.SMFAdmin ws = new WebApplication2.WebReference.SMFAdmin();
ListBox1.Items.Add("Request Submitted");
ListBox1.Items.Add("" + ws.getCountRegisteredSubscribers());
ListBox1.Items.Add("" + ws.getSubscribers("subname"));
List<string> lstOutput = new List<string>();
lstOutput = ws.getSubscribers("subname");
lstOutput.ForEach(eachItem => ListBox1.Items.Add(eachItem));
}
答案 1 :(得分:0)
从您的Exception消息中,似乎getSubscribers不会将String值作为参数。所以你必须做这样的事情。
ws.getSubscribers(new SubscriberNameInfo
{
*** value goes here **
});
我不知道SubscriberNameInfo
类的详细信息,因此我无法指定属性。
注意:上述答案中的第二条评论类似,我刚刚添加了一些代码段。
我希望,这会有所帮助。