You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebServiceX的GetWeather方法调用及PowerShell相关技术问题咨询

关于WebServiceX Weather Web Service的常见问题解答

1. 如何调用WebServiceX Web Service的GetWeather方法?

在Windows .NET环境下(包括PowerShell),调用这个方法的步骤很直接:

  • PowerShell方式:
    1. 首先创建Web服务代理对象:
      $weatherProxy = New-WebServiceProxy -Uri "http://www.webservicex.net/WeatherForecast.asmx?WSDL"
      
    2. 直接调用GetWeather方法,传入合法的城市名和国家名:
      $weatherResult = $weatherProxy.GetWeather("New York", "United States")
      
  • .NET代码(以C#为例):
    1. 在项目中添加Web引用,指向上述WSDL地址
    2. 实例化服务客户端,调用方法:
      WeatherForecast.WeatherForecastSoapClient client = new WeatherForecast.WeatherForecastSoapClient();
      var weatherData = client.GetWeather("New York", "United States");
      

2. 在编写获取天气的脚本时,WSDL中的MemberType是否用于描述API?

简单来说:MemberType是WSDL类型系统的一部分,用于描述API涉及的数据结构,但不直接定义API方法本身。

WSDL里的MemberType通常出现在complexType的定义中,用来描述复杂数据类型(比如方法的返回对象、自定义参数类型)的成员属性。比如GetWeather返回的WeatherForecast类型,其内部的日期、气温等字段就会通过MemberType来定义。它是API描述的辅助部分,帮助客户端理解需要传递和接收的数据结构,而API的方法定义(比如方法名、参数列表)是在WSDL的operation节点中定义的。


3. 在PowerShell中,如何知晓可调用的方法以及如何调用这些方法?

当你用New-WebServiceProxy创建代理对象后,有几种方式来探索可用方法:

  • 查看所有可用方法:
    $weatherProxy | Get-Member -MemberType Method
    
    这个命令会列出代理对象上所有可调用的方法,包括GetWeather、GetCountries、GetCitiesByCountry等。
  • 查看特定方法的参数信息:
    直接输入方法名(不带括号)就能看到参数定义:
    $weatherProxy.GetWeather
    
    会输出类似string GetWeather(string CityName, string CountryName)的签名。
  • 调用方法的方式就是直接传入匹配的参数,比如前面提到的$weatherProxy.GetWeather("New York", "United States"),如果参数格式正确,就能返回对应的数据。

4. 调用GetWeather返回“Data Not Found”的原因是什么?正确的调用方式是怎样的?是否需要先调用其他方法?

返回“Data Not Found”最常见的原因是传入的城市名或国家名不符合服务的预期格式,这个服务对名称的匹配很严格,必须使用它认可的标准名称。

正确的调用流程其实需要先获取合法的国家和城市列表:

  1. 先调用GetCountries方法获取所有支持的国家名称:
    $countries = $weatherProxy.GetCountries()
    
    从返回的列表里挑选你需要的国家(比如"United States",注意大小写和拼写)。
  2. 再调用GetCitiesByCountry方法,传入上一步的国家名,获取该国家下的合法城市列表:
    $cities = $weatherProxy.GetCitiesByCountry("United States")
    
  3. 最后用列表里的城市名和对应国家名调用GetWeather:
    $weatherResult = $weatherProxy.GetWeather("New York", "United States")
    

另外,还有可能的原因是该地区的天气数据暂未被服务收录,不过这种情况比较少见。一定要避免使用简称(比如用"US"代替"United States")或者拼写错误的名称,否则就会返回“Data Not Found”。


内容的提问来源于stack exchange,提问作者Thufir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:42:32