2017-02-20 103 views
0

我写了一个从国家气象局web服务检索数据的过程。在情人节之前,它一直工作好几年。现在这个调用一直在收到一个空的响应错误。我已经联系了国家气象局,他们迄今还没有能够提供任何建议,除非说他们最近更改为https。我试着创建一个新的简单测试项目,并在其中添加对https URL的新引用,但仍然收到空的响应错误。任何人都可以提出解决方案国家气象局web服务的空回应

我设定的Web引用:

https://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl

下面是我测试的代码,它仍然无法与空响应错误:

private void cmdGo_Click(object sender, RoutedEventArgs e) 
    { 
     decimal nLatitude = (decimal)30.32; 
     decimal nLongitude = (decimal)-81.55; 
     DateTime dEndTime = DateTime.Now; 
     DateTime dStartTime = dEndTime.AddHours(-2); 
     XmlDocument oXmlDocument = GetXmlDocument(nLatitude, nLongitude, dStartTime, dEndTime); 
    } 
    private XmlDocument GetXmlDocument(decimal nLatitude, decimal nLongitude, DateTime dStartTime, DateTime dEndTime) 
    { 
     XmlDocument oXmlDocument = new XmlDocument(); 
     try 
     { 
      gov.weather.graphical.ndfdXML oWebProxy = new gov.weather.graphical.ndfdXML(); 
      gov.weather.graphical.productType oProductType = gov.weather.graphical.productType.timeseries; 
      gov.weather.graphical.unitType oUnitType = gov.weather.graphical.unitType.e; 
      gov.weather.graphical.weatherParametersType oWeatherParametersType = new gov.weather.graphical.weatherParametersType(); 
      oWeatherParametersType.appt = true;   // Apparent Temperature 
      oWeatherParametersType.icons = true;  // Conditions Icons 
      oWeatherParametersType.dew = true;   // Dew Point Temperature 
      oWeatherParametersType.maxt = true;   // Daily Maximum Temperature 
      oWeatherParametersType.mint = true;   // Daily Minimum Temperature - no response 
      oWeatherParametersType.pop12 = true;  // 12 Hourly Probability of Precipitation 
      oWeatherParametersType.precipa_r = true; // Liquid Precipitation Amount 
      oWeatherParametersType.rh = true;   // Relative Humidity 
      oWeatherParametersType.sky = true;   // Cloud Cover Amount 
      oWeatherParametersType.snow = true;   // Snow Amount 
      oWeatherParametersType.temp = true;   // Temperature 
      oWeatherParametersType.wdir = true;   // Wind Direction 
      oWeatherParametersType.wgust = true;  // Wind Speed Gust 
      oWeatherParametersType.wspd = true;   // Wind Speed 
      oWeatherParametersType.wwa = true;   // Watches, Warnings, and Advisories 
      oWeatherParametersType.wx = true;   // Weather Type, Coverage, and Intensity 

      string sXmlData = oWebProxy.NDFDgen(nLatitude, nLongitude, oProductType, dStartTime, dEndTime, oUnitType, oWeatherParametersType); 
      oXmlDocument.LoadXml(sXmlData); 
     } 
     catch (Exception e) 
     { 
      string sMessage = e.Message; 
      sMessage = "Error: " + sMessage; 
     } 
     return oXmlDocument; 
    } 

回答

3

为C#Web引用我改变我们从:

http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl

到:

https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl

我不得不改变一些参数的我的电话,以“串”格式,但它返回的XML似乎是在相同的格式为我所用的其他网址。

希望这会有所帮助。

我的电话现在:

ndfdXML.NDFDgenByDay(currentLoc.latitude, currentLoc.longitude, DateTime.Now, "7", "e", "12 hourly"); 

为了让7天在我的领域。

+0

非常感谢。该新网址也适用于我。你是怎么找到的?我用他们的技术支持交换了电子邮件,我没有与他们一起。 –

+0

我一直在搜索,并以某种方式来到这里:https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php 从那里我点击链接“查看服务的WSDL”。 打开xml查看后,我查看了浏览器URL中的地址,并认为我会试试看。 – justiz33

+0

优秀的调查。我会尽力记住这种方法。 –