支持Google Geocoding API的gzip响应

时间:2012-03-10 09:07:56

标签: gzip google-geocoding-api

我正在使用iOS应用程序中的Google Geocoding API v3 [1]但无法让它返回gzip响应。 v2更轻量级但是使用v3我得到了一个~20kb的JSON响应..这可能需要一些时间来检索一个糟糕的GPRS连接,所以我真的想得到一个gzip压缩结果。

我想知道我在通话中是否做错了,或者他们的API是否真的不支持gzip或deflate。这听起来很奇怪。

这是我在我的代码中所做的事情:

NSURL *url = [NSURL URLWithString:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=55,12&sensor=true"];

NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
[req setValue:@"gzip,deflate" forHTTPHeaderField:@"Accept-Encoding"];

NSURLConnection *c = [[NSURLConnection alloc] 
  initWithRequest:req delegate:self startImmediately:YES];

我也只尝试过“gzip”和“deflate”。结果相同。

[1] http://code.google.com/apis/maps/documentation/geocoding/

2 个答案:

答案 0 :(得分:2)

至少对于GData API,您需要添加包含字符串User-Agent的{​​{1}}标头,请参阅https://developers.google.com/gdata/faq#gzip。希望这适用于Directions API service,我尝试了它并且能够获得gzip响应。

答案 1 :(得分:1)

我不知道为什么,但它似乎与User-Agent标题有关。当我使用Firefox(Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2)请求API页面时,我得到了一个gzipped响应。当我使用cURL请求页面时(特别是要求压缩响应),我得到一个明确的响应。但是,如果我将cURL的默认代理覆盖到Mozilla代理,我获得压缩响应。