这是我第一次使用网络服务而且我有点迷失了。 我成功调用了函数,但我只能从中获取一个值 服务。我读到最简单的方法是读取xml或创建对象 然后调用他们的值。目前我使用返回所需的函数 价值,但我需要打电话给他们3次,以获得所有的数据,这是浪费时间 和资源。我尝试使用URL调用该服务并将其用作网站 或者在不导入程序的情况下使服务以相同的方式工作。 问题是我无法找到将值传递到url的方法,因为这样 我只得到空白页。从服务中获取数据的最快方法是什么? 如果城市有效,我需要城市名称,温度和旗帜。我需要通过拉链 代码到服务。
谢谢。
我当前的代码
wetther.Weather wether = new wetther.Weather();
string farenhait = wether.GetCityWeatherByZIP(zip).Temperature;
string city = wether.GetCityWeatherByZIP(zip).City;
bool correct = wether.GetCityWeatherByZIP(zip).Success;
我试过这种方式
// Retrieve XML document
XmlTextReader reader = new XmlTextReader("http://xml.weather.yahoo.com/forecastrss?p=94704");
// Skip non-significant whitespace
reader.WhitespaceHandling = WhitespaceHandling.Significant;
// Read nodes one at a time
while (reader.Read())
{
// Print out info on node
Console.WriteLine("{0}: {1}", reader.NodeType.ToString(), reader.Name);
}
这个适用于雅虎页面但不适合我的。
我需要使用此网络服务 - > http://wsf.cdyne.com/WeatherWS/Weather.asmx
答案 0 :(得分:2)
最好的方法是在项目中添加对Web服务的引用。从这里,您将能够查询Web服务,就像它是您项目中的类一样。右键单击Solution Explorer
中的项目,然后点击Add Service Reference
。然后,您可以将Web服务URL复制并粘贴到对话框中。
然后你可以这样查询......
Weather.WeatherSoapClient w = new Weather.WeatherSoapClient();
Weather.ForecastReturn f = w.GetCityForecastByZIP("12345");
string farenhait = f.Temperature;
string city = f.City;
bool correct = f.Success;
基本上你正在做的是每次都触发HTTP请求。您需要做的是将单个请求放入一个对象(f
),然后您可以检索其属性。
答案 1 :(得分:1)
WeatherServiceRef.WeatherSoapClient weatherSoapClient = new WeatherSoapClient("WeatherSoap");
WeatherServiceRef.ForecastReturn forecastRet = weatherSoapClient.GetCityForecastByZIP("90210"); //enter valid zip string
foreach (Forecast forecast in forecastRet.ForecastResult)
{
Console.WriteLine("\nForecast {0}", forecast.WeatherID);
Console.WriteLine ("Temperature (morning low): {0}", forecast.Temperatures.MorningLow);
Console.WriteLine("Temperature (morning high): {0}", forecast.Temperatures.DaytimeHigh);
Console.WriteLine("Probability of precipitation (daytime): {0}", forecast.ProbabilityOfPrecipiation.Daytime)
//insert other code to retrieve values here
}
Console.ReadLine();
您可以使用右键单击添加服务将服务引用添加到Web服务。在我的情况下,我已经调用了服务引用WeatherServiceRef。
答案 2 :(得分:1)
我用@MichaelCoxes回答并想出了。完美运作
degress.TempConvert todegress = new degress.TempConvert();
wetther.Weather wether = new wetther.Weather();
wetther.WeatherReturn f = wether.GetCityWeatherByZIP("10001");
string city = f.City;
bool correct = f.Success;
string farenhait = f.Temperature;