2010-10-13 9 views
0

J'ai un peu de servlet google appengine java que j'accède à partir de certains app iphone 4.appengine, iphone et gzip

La servlet écrit la réponse au format XML. J'ai défini le type de contenu de la réponse de servlet sur "text/plain". Si je récupère la page de servlet avec Chrome, la réponse est gzippée (1 Ko). Mais, si je vais chercher le servlet en utilisant mon application iPhone, la réponse est de 19 Ko de taille ...

Soit l'application iPhone va chercher des données avec [NSData dataWithContentOfURL:url] ou avec une NSMutableURLRequest avec le champ d'en-tête HTTP « Accept-Encoding » sur " gzip ", la réponse n'est toujours pas gzippée.

De plus, je peux voir dans les journaux Google AppEngine que mon application iPhone accepte gzip: CFNetwork/485.10.2 Darwin/10.4.0,gzip(gfe)

Que puis-je faire?

Merci. François

+0

Comment avez-vous confirmé que le passage Accept-Encoding: gzip par un résultat NSMutableURLRequest dans une réponse non compressé? Il me donne une réponse compressée quand j'ai essayé - voir http://github.com/jabley/iphone-http/blob/master/Classes/NSURLConnectionFetchTask.m – jabley

+0

'gzip (gfe)' ne signifie pas réellement qu'il reconnaît votre le client prend en charge gzip - 'GFE' signifie Google Front End. –

+0

Ci-dessous sont les journaux GAE qui me font dire que mon application iPhone ne gère pas les demandes gzip: *** iPhone: ***/initialisation 200 48ms 38cpu_ms 19ko myAppName/3.0 CFNetwork/485.10.2 Darwin/10.4.0, gzip (gfe) *** Chrome: ***/initialisation 200 52ms 39cpu_ms 1kb Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, comme Gecko) Chrome/6.0.472.63 Safari /534.3,gzip(gfe) –

Répondre

0

Ok, j'ai trouvé un moyen: vous devez ajouter "gzip" à l'User-Agent.

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:myURL]]; 
[request addValue:@"gzip" forHTTPHeaderField:@"User-Agent"]; 

Si vous le faites de cette façon, vous perdu les valeurs par défaut définies par le cadre (appName/Version CFNetwork/bla bla bla), mais GAE renvoie une réponse gzip.

0

Je ne pense pas que vous devriez mettre User-Agent