【问题标题】:Supporting gzip response from Google Geocoding API支持来自 Google Geocoding API 的 gzip 响应
【发布时间】:2012-03-10 09:07:55
【问题描述】:

我在 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/

【问题讨论】:

    标签: gzip google-geocoding-api


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你在现场!我使用了 Firefox 标头,现在我得到了 gzip 压缩的结果。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2014-09-13
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      相关资源
      最近更新 更多