我正在使用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/
答案 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代理,我做获得压缩响应。