Ошибка получения данных о местоположении по широте и долготе на картах Bingmaps - PullRequest
2 голосов
/ 25 ноября 2011

Я использую API Bingmaps для получения AdminDistrict и CountryRegion широты и долготы.Он работает, вводя в браузере этот URL:

http://dev.virtualearth.net/REST/v1/Locations/-30,-70/?includeEntityTypes=AdminDivision1,CountryRegion&o=xml&c=es-ES&key=myBingmapsApiKey

Но в C # на WP7 я не могу заставить его работать.Это код:

string wsUrl = "http://dev.virtualearth.net/REST/v1/Locations/-30,-70/?includeEntityTypes=AdminDivision1,CountryRegion&o=xml&c=es-ES&key=*myBingmapsApiKey*";

var request = new RestSharp.RestRequest(Method.GET);
var client = new RestSharp.RestClient(wsUrl);

try
{
    RestSharp.RestResponse resource;
    client.ExecuteAsync(request, (response) =>
    {
        resource = response;
        string content = resource.Content;
        string status_code = resource.StatusCode.ToString();
        string response_status = resource.ResponseStatus.ToString();
    });
}
catch (Exception e)
{
    string error = "Error: " + e.ToString() + "\n. Stack Trace: " + e.StackTrace;
}

И ответ:

    <?xml version="1.0" encoding="utf-8"?>
    <Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">
<Copyright>Copyright © 2011 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.</Copyright>
<BrandLogoUri>http://dev.virtualearth.net/Branding/logo_powered_by.png</BrandLogoUri>
<StatusCode>401</StatusCode><StatusDescription>Unauthorized</StatusDescription>
<AuthenticationResultCode>InvalidCredentials</AuthenticationResultCode>
<ErrorDetails><string>Access was denied. You may have entered your credentials incorrectly, or you might not have access to the requested resource or operation.</string></ErrorDetails>
<TraceId>59ebcf604bb343d79a6e8b93ad5695fe|MIAM001452|02.00.71.1600|</TraceId>
<ResourceSets />
    </Response>

URL-адрес тот же, что работает в веб-браузере.Что может быть не так?

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

вероятно, в этот момент вы уже нашли решение, но в поиске в Google я нашел эту тему, и решение состоит в том, чтобы не посылать ключ через URL, как вы делаете, вместо этого добавьте его в качестве параметра в запросе так:

string wsUrl = "http://dev.virtualearth.net/REST/v1/Locations/-30,-70/";    

var request = new RestSharp.RestRequest(Method.GET);    
request.AddParameter("includeEntityTypes", "AdminDivision1,CountryRegion");
request.AddParameter("key", myLey);
request.AddParameter("o", "xml");
0 голосов
/ 25 ноября 2011

Если я правильно понимаю, тогда используемый вами REST API может стоить денег .Может быть, ваш ключ API не настроен для оплачиваемых транзакций?

На странице говорится об оплате API местоположения:

* Эта категория не оплачивается, если она возникает в контекстесеанс управления AJAX или управления Silverlight.

Возможно, браузер считается элементом управления AJAX, и телефон не является "элементом управления Silverlight".

...