2011-11-24 82 views
2

我使用Bingmaps API获取纬度和经度的AdminDistrict和CountryRegion。 它可以在浏览器中输入这个网址:在Bingmaps上输入来自经纬度的位置数据时出错

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> 

的网址是正在Web浏览器相同。 什么可能是错的?

回答

0

如果我理解这个权利,那么您使用的REST API may cost money。也许你的API密钥没有设置用于计费交易?

的网页说,有关地点API的计费方式:

*如果AJAX控件或Silverlight控制会话的上下文中出现呢?这类别不是计费。

也许浏览器算作AJAX控件,手机并不完全是“Silverlight控件”。

3

可能在这一点上,你已经想出了一个解决方案,但在谷歌上搜索我发现这个话题,解决方案是不像你那样通过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");