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

少なくともGDataAPIの場合User-Agentは、文字列を含むヘッダーを追加する必要があります。https://developers.google.com/gdata/faq#gzipgzipを参照してください。これがDirectionsAPIサービスで機能することを期待して、私はそれを試し、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 ページを要求すると、gzip された応答が返されます。cURL を使用してページをリクエストすると (具体的には圧縮された応答を要求する)、プレーンな応答が返されます。ただし、cURL のデフォルト エージェントを Mozilla のエージェントにオーバーライドすると、圧縮された応答が得られます。

于 2012-03-10T09:17:35.573 に答える