1

我正在使用来自 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/

4

2 回答 2

2

至少对于 GData API,您需要添加一个User-Agent包含字符串的标头gzip,请参阅https://developers.google.com/gdata/faq#gzip。希望这可以与Directions API 服务一起使用,我尝试了它并且能够获得 gzip 响应。

于 2012-05-26T21:20:13.837 回答
1

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

于 2012-03-10T09:17:35.573 回答