2010-10-13 2 views
0

У меня есть сержант Java-приложения google appengine, из которого я получаю доступ из некоторого приложения iphone 4.appengine, iphone и gzip

Сервлет пишет ответ как XML. Я установил тип содержимого ответа сервлета на «text/plain». Если я получаю страницу сервлета с помощью Chrome, ответ будет gzipped (1 Кб). Но, если я получаю сервлет с помощью моего приложения iphone, ответ имеет размер 19 КБ ...

Либо приложение iphone извлекает данные с помощью [NSData dataWithContentOfURL:url] или с некоторым NSMutableURLRequest с полем заголовка HTTP «Accept-Encoding», gzip ", ответ по-прежнему не gzip.

Кроме того, я могу видеть в журналах AppEngine Google, что мой iphone приложение принимает GZIP: CFNetwork/485.10.2 Darwin/10.4.0,gzip(gfe)

Что я могу сделать?

Спасибо. François

+0

Как вы подтвердили, что передача Accept-Encoding: GZIP через дополнительные результаты NSMutableURLRequest в несжатом ответ? Это дает мне сжатый ответ, когда я пытался - см. Http://github.com/jabley/iphone-http/blob/master/Classes/NSURLConnectionFetchTask.m – jabley

+0

«gzip (gfe)» на самом деле не означает, что он распознает ваш клиент поддерживает gzip - «GFE» означает Google Front End. –

+0

Ниже приведены журналы GAE, которые заставляют меня говорить, что мое приложение iphone не обрабатывает запросы gzip: *** iPhone: ***/initialisation 200 48ms 38cpu_ms 19kb 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, например, Gecko) Chrome/6.0.472.63 Safari /534.3,gzip(gfe) –

ответ

0

Хорошо, я нашел способ: вам нужно добавить «gzip» к User-Agent.

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

Если вы делаете это таким образом, вы потеряли значения по умолчанию, установленные в рамках (APPNAME/Version CFNetwork/бла-бла-бла), но GAE возвращает сжатыми ответ.

0

Я не думаю, что вы должны установить User-Agent