我写了一个应用程序来解析CSV文件,使用Bing Maps REST API提取地址并对它们进行地理编码。我遇到的问题是,如果我多次运行同一个文件,我会得到不同的结果。在第一次试验中,第2行和第6行可能不返回任何匹配项。在下面的试验中,第2行和第6行将返回匹配,第4行可能不会。我使用Fiddler检查了HTTP流量。我的请求正确形成,每个响应都返回HTTP状态代码200和有效的JSON,只有一些地址产生结果,而有些地址没有,并且特定地址的成功或失败从试验变为试验。任何人都可以提供任何见解吗?
更新
样品申请:
GET http://dev.virtualearth.net/REST/v1/Locations?o=json&adminDistrict=MI&locality=Shelby&postalCode=49455-1299&addressLine=72+South+State+Street&key={MyApiKey} HTTP/1.1
Host: dev.virtualearth.net
示例回复:
HTTP/1.1 200 OK
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json
Server: Microsoft-IIS/8.0
X-BM-TraceID: 9b6cfaa0abdb47b7b7e2790900bcddce
X-BM-Srv: BL2M001304, BL2MSNVM001275, BL2MSNVM001299
X-MS-BM-WS-INFO: 0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 22 Feb 2013 15:14:30 GMT
247
{
"authenticationResultCode":"ValidCredentials",
"brandLogoUri":"http:\/\/dev.virtualearth.net\/Branding\/logo_powered_by.png",
"copyright":"Copyright © 2013 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.",
"resourceSets":
[
{
"estimatedTotal":0,
"resources":[]
}
],
"statusCode":200,
"statusDescription":"OK",
"traceId":"9b6cfaa0abdb47b7b7e2790900bcddce|BL2M001304|02.00.83.1900|BL2MSNVM001275, BL2MSNVM001299"
}
0
答案 0 :(得分:4)
Bing地图密钥和速率限制信息
我确定您使用的是Bing地图密钥,它可能是试用版或基本密钥。这种类型的密钥由于显而易见的原因(在24小时期间和请求之间的时间)受到速率限制,这就是为什么你得到一个空白的响应而没有关于它未能进行地理编码这一事实的任何信息的原因。
请参阅有关限制和其他限制的使用条款(压力测试和锤击是其中的一部分):http://www.microsoft.com/maps/product/terms.html
所以,为了解决你的问题,你应该:
X-MS-BM-WS-INFO
设置为1 请参阅有关错误处理的MSDN:http://msdn.microsoft.com/en-us/library/ff701703.aspx
如果您不是这种情况(如果您有企业帐户),请联系技术支持,以便他们可以正式回复并检查密钥。
其他信息:
由于您使用的是CSV地理编码器,我强烈建议您使用Bing地图空间数据服务执行批量地理编码,请参阅MSDN上的完整信息:http://msdn.microsoft.com/en-us/library/ff701733.aspx
它将减少您将进行的事务数量(每个地理编码数据流作业计为1个事务,并且每个文件可包含超过20万个实体)。