2012-03-01 98 views
0

我正在嘗試使用Yahoo的PlaceFinder API獲取郵政編碼的經度和緯度。在我的本地機器上一切正常,但是當我將它上傳到我的生產服務器時,我收到了來自Yahoo的連接拒絕錯誤。我在下面複製了我的代碼:Yahoo PlaceFinder API連接問題

Dictionary<string, decimal> GetYahooGeoCode(string postcode) 
    { 

     string url = "http://where.yahooapis.com/geocode?flags=J&appid=[My_App_ID]&location="; 

     decimal latitude = 0; 
     decimal longitude = 0; 

     try 
     { 
      dynamic yahooResults = new Uri(url + postcode).GetDynamicJsonObject(); 
      foreach (var result in yahooResults.ResultSet.Results) 
      { 
       latitude = (decimal)result.latitude; 
       longitude = (decimal)result.longitude; 
      } 

      Dictionary<string, decimal> geoCode = new Dictionary<string, decimal>(); 

      geoCode.Add("latitude", latitude); 
      geoCode.Add("longitude", longitude); 

      return geoCode; 
     } 
     catch (Exception ex) 
     { 
      Log4NetLogger logger = new Log4NetLogger(); 

      logger.Error(ex); 

      return null; 
     } 
    } 

我得到的錯誤是:由於目標機器主動拒絕,所以無法建立連接。有沒有人有任何想法呢?我做了很多搜索,似乎無法找到關於此問題的任何信息。我不知道這是否有所作爲,但我的生產服務器是專用的雲服務器。任何幫助,將不勝感激。

回答

0

我在這裏嘗試解決你的問題我的孤子:

檢查你的web.config:

<system.net> 
    <defaultProxy /> 
</system.net> 

而且我的代碼(GetDynamicJsonObject()不能解析的響應):

 string postcode = "10003"; 
     string url = String.Format("http://where.yahooapis.com/geocode?state={0}&postal={1}", "NY", postcode); 

     Dictionary<string, decimal> geoCode = new Dictionary<string, decimal>(); 

     System.Xml.Linq.XDocument xDocument = XDocument.Load(url); 
     var latlon = (from r in xDocument.Descendants("Result") 
         select new { latitude = r.Element("latitude").Value, longitude = r.Element("longitude").Value }).FirstOrDefault(); 

     if(null != latlon) 
     { 
      geoCode.Add("latitude", Convert.ToDecimal(latlon.latitude)); 
      geoCode.Add("longitude", Convert.ToDecimal(latlon.longitude)); 
     } 

檢查地方發現者雅虎API參數http://developer.yahoo.com/geo/placefinder/guide/requests.html#base-uri

+0

嗨Zoli,試過你的解決方案,但n o高興我仍然得到相同的錯誤 – 2012-03-01 20:48:33

+0

你檢查了你的web.config?你可以聯繫其他服務嗎?如果不是,你有一些程序/機器配置問題。用telnet cmd,telnet where.yahooapis.com 80'查看(點擊d ENTER鍵)。 – Zoli 2012-03-01 21:14:20

+0

我做過了,我沒有提到你的配置,所以我在測試你的解決方案時添加了它,但沒有喜悅。我剛剛在我的服務器上安裝了telnet客戶端,並嘗試按照您的建議連接到yahooapis.com,但無法連接。所以看起來像服務器的問題,而不是我的代碼,這是好消息和壞消息。不要以爲你有任何想法可能是錯誤的服務器? :) – 2012-03-01 23:43:59