NSHTTPURL: разные ответы на iPhone 5 и 5s

Это официально самая странная вещь, которую я когда-либо видел. У меня iPhone 5 и iPhone 5s, оба на iOS 7.1.2, полностью чистые. Я запускаю следующий код:

NSString *userAgent = @"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3";
NSURL *url = [NSURL URLWithString: deviceString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];
[request setValue:userAgent forHTTPHeaderField:@"User-Agent"];
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSDictionary *dict = [response allHeaderFields];
NSLog(@"Status code: %d",[response statusCode]);
NSLog(@"Headers:\n %@",dict.description);
NSLog(@"Error: %@",error.description);
NSLog(@"Response data: %@",[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);

IPhone 5s возвращает правильный источник страницы, который я ищу, и тот же, который я получил в симуляторе. Заголовок выглядит так:

"Alternate-Protocol" = "80:quic";
"Cache-Control" = "no-cache";
"Content-Encoding" = gzip;
"Content-Length" = 5627;
"Content-Type" = "text/plain; charset=utf-8";
Date = "Fri, 01 Aug 2014 17:21:40 GMT";
Expires = "Tue, 27 Apr 1971 19:44:06 EST";
P3P = "CP=\"This is not a P3P policy! See http://support.google.com/accounts/bin/answer.py?answer=151657&hl=en for more info.\"";
Server = "gwiseguy/2.0";
"Set-Cookie" = "YSC=oohlyqgkgwg; path=/; domain=.youtube.com; httponly";
"X-Content-Type-Options" = nosniff;
"X-Frame-Options" = SAMEORIGIN;
"X-XSS-Protection" = "1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube";

IPhone 5 возвращает что-то другое и значительно короче, как вы можете видеть из заголовка Content-Length:

"Alternate-Protocol" = "80:quic";
"Cache-Control" = "no-cache";
"Content-Length" = 767;
"Content-Type" = "text/html; charset=utf-8";
Date = "Fri, 01 Aug 2014 17:23:06 GMT";
Expires = "Tue, 27 Apr 1971 19:44:06 EST";
P3P = "CP=\"This is not a P3P policy! See http://support.google.com/accounts/bin/answer.py?answer=151657&hl=en for more info.\"";
Server = "gwiseguy/2.0";
"Set-Cookie" = "YSC=2KFSqyO4p1k; path=/; domain=.youtube.com; httponly";
"X-Content-Type-Options" = nosniff;
"X-Frame-Options" = SAMEORIGIN;
"X-XSS-Protection" = "1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube";

Я запутался.

РЕДАКТИРОВАТЬ:

Я обнаружил, что iPhone 5 работает правильно, а iPhone 5s - нет !? Мы тестируем одну и ту же сеть Wi-Fi, но телефоны разделены между службами AT&T и Verizon. 1 Verizon работает, остальные нет. Все AT&T работает.

ОБНОВИТЬ:

Я решил проблему. Теперь мне нужна помощь в понимании того, что я сделал: / Я заметил разницу между заголовками в строке "Content-Encoding" = gzip Поэтому я установил эту строку в своем коде:

    [request setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];

Теперь запрос работает должным образом, но зачем мне это делать? Раньше я этого не делал, это не новая функция.


person JeffN    schedule 01.08.2014    source источник
comment
Эти устройства находятся в одной сети? Как они связаны? Есть ли какие-либо устройства между конечной точкой и Интернетом?   -  person esqew    schedule 01.08.2014
comment
Я только что редактировал, вижу новую информацию. Спасибо!   -  person JeffN    schedule 01.08.2014
comment
Вам действительно следует опубликовать свои выводы о том, как вы решили проблему, которую изначально задавали в качестве ответа, и приняли ее. Затем вы должны задать свой следующий вопрос как совершенно новый вопрос.   -  person esqew    schedule 01.08.2014
comment
Сделаю. Я отправил ответ, который потребует 2 дня, прежде чем я смогу его принять.   -  person JeffN    schedule 02.08.2014


Ответы (1)


Я заметил разницу между заголовками в строке «Content-Encoding» = gzip. Поэтому я установил эту строку в своем коде:

 [request setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];

Теперь запрос работает как положено.

person JeffN    schedule 01.08.2014