如何从Web服务获取XML?

时间:2014-12-05 02:17:39

标签: c# asp.net web-services asmx

我正在尝试访问this link

上的网络服务

如果您调用该方法,您将获得回复。

现在我想从我的asp.net应用程序调用GetCitiesByCountry方法,只将城市加载到下拉列表中,我已经编码了

protected void Page_Load(object sender, EventArgs e)
       {
            weather.GlobalWeatherSoapClient wet = new weather.GlobalWeatherSoapClient();
            DataSet ds = new DataSet(wet.GetCitiesByCountry("United Kingdom"));
            ds.GetXml();            
            DropDownList1.DataTextField = "City";
            DropDownList1.DataValueField = "City";
            DropDownList1.DataSource = ds;
            DropDownList1.DataBind();
}

但是我收到以下错误:

服务器错误' /'应用

IListSource不包含任何数据源。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息: System.Web.HttpException:IListSource不包含任何数据源。

Source Error:     

Line 23: DropDownList1.DataValueField = "City";
Line 24: DropDownList1.DataSource = ds;
Line 25: DropDownList1.DataBind();          

源文件:c:\ Users \ Rafi \ Documents \ Visual Studio 2013 \ Projects \ WebSite4 \ demo1 \ main.aspx.cs Line:25


任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:2)

使用错误的DataSet函数

DataSet ds = new DataSet();
ds.ReadXml(new StringReader(wet.GetCitiesByCountry("United Kingdom")));

请参阅Msdn

答案 1 :(得分:1)

这是因为您正在设置数据集的名称而不是将任何数据放入其中。 Dataset(string)构造函数将数据集的名称设置为传递给它的字符串。基本上,您将数据集的名称设置为Web服务返回的值。

你应该这样做

DataSet yourDataSet = new DataSet("my dataset");

yourDataSet.ReadXml(new StringReader(wet.GetCitiesByCountry("United Kingdom")));

答案 2 :(得分:0)

尝试

DropDownList1.DataSource = ds.Tables["<tablename>"].DefaultView;

这里是您需要从下拉列表中加载数据的表名。

如果您的数据集中只有一个表,那么您可以执行以下操作

DropDownList1.DataSource = ds.Tables[0].DefaultView;