我正在尝试使用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 :(得分: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));
}
在此查看地方查找器yahoo api参数http://developer.yahoo.com/geo/placefinder/guide/requests.html#base-uri