Я сослался на это: https://docs.microsoft.com/en-us/bingmaps/rest-services/using-the-rest-services-with-net и написал следующий код.
public void Geocode(string BingMapKey,string addressToBeGeocoded)
{
Uri geocodeRequest = new Uri(string.Format("http://dev.virtualearth.net/REST/v1/Locations?key={0}", BingMapKey));
GetPOSTResponse(geocodeRequest,addressToBeGeocoded, (x) =>
{
if (!(x.ResourceSets[0].Resources.Length > 0))// atleast one matching result has come.0 is the best matching result
{
geocodeNotFound=true;
}
else
{
BingMapsRESTService.Common.JSON.Location val = x.ResourceSets[0].Resources[0] as BingMapsRESTService.Common.JSON.Location;
var latitude = val.GeocodePoints[0].Coordinates[0];
var longitude = val.GeocodePoints[0].Coordinates[1];
}
}
}
private void GetPOSTResponse(Uri uri, string data, Action<BingMapsRESTService.Common.JSON.Response> callback)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "text/plain;charset=utf-8";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(data);
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
// Send the data.
requestStream.Write(bytes, 0, bytes.Length);
}
request.BeginGetResponse((x) =>
{
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(x))
{
if (callback != null)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(BingMapsRESTService.Common.JSON.Response));
try
{
callback(ser.ReadObject(response.GetResponseStream()) as BingMapsRESTService.Common.JSON.Response);
}
catch (Exception e)
{
errorCount++;
}
}
}
}, null);
}
Но это дает мне ошибку: {"The remote server returned an error: (405) Method Not Allowed."}
вместо этого, если я использую вызов GETкак упомянуто в примере ссылки на bing, это работает.Я хочу использовать почтовый звонок.
Я не знаю, как точно должен выглядеть Uri geocodeRequest = new Uri(string.Format("http://dev.virtualearth.net/REST/v1/Locations/key={0}", bingMapKey));
.Я думаю, что адрес будет в теле.Я не прав?