Я закодировал класс для вычисления расстояния между двумя координатами. Но как только я запускаю проект, он дает ошибку:403 запрещено. WebException был необработанным. NET
WebException was unhandled.
An unhandled exception of type 'System.Net.WebException' occurred in System.Xml.dll
Additional information: The remote server returned an error: (403) Forbidden.
Мой код:
public Tuple<double, double> GetCoords(string Streetnumber, string Streetname, string Cityname, string Country)
{
XmlDocument doc = new XmlDocument();
string clientId = "///"; =
string key = "//";
string address = Streetnumber + "+" + Streetname + ",+" + Cityname + ",+" + Country;
var urlRequest = "/maps/api/geocode/xml?address=" + address + "&client=" + clientId;
System.Security.Cryptography.HMACSHA1 myhmacsha1 = new System.Security.Cryptography.HMACSHA1();
myhmacsha1.Key = Convert.FromBase64String(key);
var hash = myhmacsha1.ComputeHash(System.Text.Encoding.ASCII.GetBytes(urlRequest));
string signature = Convert.ToBase64String(hash).Replace("+", "-").Replace("/", "_");
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
doc.Load("https://maps.googleapis.com/maps/api/geocode/xml?address=" + address + "&client=" + clientId + "&signature=" + signature);
string longitude = doc.SelectSingleNode("//GeocodeResponse/result/geometry/location/lng").InnerText;
double lng = LongitudePlace(longitude);
string latitude = doc.SelectSingleNode("//GeocodeResponse/result/geometry/location/lat").InnerText;
double lat = LatitudePlace(latitude);
return Tuple.Create(lng, lat);
}
У меня также есть некоторые другие методы, но они не имеют никакого отношения к этой проблеме. Ошибка указана по адресу:
doc.Load("https://maps.googleapis.com/maps/api/geocode/xml?address=" + address + "&client=" + clientId + "&signature=" + signature);
Возможно, это легко исправить, но я пробовал много чего. Мойправильный, также ключ, который является секретным ключом на console.developer.google.com, если я не ошибаюсь.
Я пробовал тестовый адрес «1600», «Амфитеатр + Парквей», «Гора + Вид», «CA».
Как решить эту ошибку?
может быть ваша строка здания. предположите, что вы используете кодировку url или аналогичную https://msdn.microsoft.com/en-us/library/system.net.webutility.urlencode(v=vs.110).aspx – Ewan
Вы взяли сгенерированную строку и вставили ее в браузер? –
@RonBeyer да, я сделал, и он не работал. –