2009-08-18 3 views
0

У кого-нибудь есть ключ, почему скачанный html-код через Wifi отличается от того же содержимого url, что и Edge/3G? Я заметил это при использовании функции, потому что выход из Wifi имеет гораздо больше строк, чем выход 3G. Анализируя код, я мог видеть, что было обнаружено только несколько разрывов строк. Вот код:Wifi vs. Edge/3G и componentsSeparatedByString (NSString)

NSString *htmlCode = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"www.any.url"]]; 
NSArray *htmlCodeByLines = [[NSArray alloc] init]; 

htmlCodeByLines = [htmlCode componentsSeparatedByString:@"\n"]; 

фг

ответ

0

Поскольку вы используете HTML, он может иметь что-то делать с тем, что промежуточные слои ввода в информации клиента. Различные серверы часто отправляют разные результаты, исходя из того, что они считают вашими возможностями. Это особенно верно для мобильных браузеров.

Я предлагаю получить сниффер пакетов и взглянуть на трафик. Wireshark на ноутбуке, связанном с немым центром, это лучше всего, но это было бы сложно с беспроводной/3G. Вместо этого вы можете запустить его в целевой (серверной) системе. В частности, обратите внимание на различия в пакетах HTTP, которые вы отправляете для двух разных конфигураций.

С другой стороны, вы также можете проверить, не совпадают ли содержимое входящих пакетов. Это скажет вам, что что-то на вашем конце зачищает вещи. Скорее всего, я подумаю, но, возможно, возможно.

0

В вашей сети Wi-Fi включен прокси-сервер HTTP?

+0

Скорее всего, сеть перевозчиков имеет прозрачный HTTP-прокси, который выполняет сжатие данных, чтобы обеспечить более быструю загрузку – AlBlue

0

нет Wi-Fi не имеет прокси. Во всяком случае, у меня нет никаких проблем с Wi-Fi, но w/Edge/3G. Я действительно не ожидал таких трудностей. Между тем, я думаю, что проблемы вызваны моим провайдером. К сожалению, я не могу обнюхать пакеты, чтобы сравнивать различия между Wi-Fi и Edge/3G.

1

Почему вы предполагаете, что новые строки HTML имеют какое-либо отношение к тому, что вы пытаетесь сделать с ним? В HTML нет реального значения для новых строк.

Сайты, которые оптимизируют для мобильных браузеров, обычно выделяют все незначительные пробелы (в том числе новые строки) для ускорения загрузки. Как и при обнюхивании браузером, могут возникнуть различия в сгенерированном результате с сервера на основе того, с какого IP-адреса вы подключаетесь, и могут быть прозрачные HTML-прокси на пути (для http-запросов), о которых вы не знаете на 3G-сеть делает перевод.

Таким образом, вы не должны связывать какое-либо значение с наличием символов новой строки на странице HTML и не должны ожидать, что между вами и сайтом нет прозрачных прокси-серверов, если вы переходите через мобильную сеть , (Если вы можете просмотреть сайт в HTTPS, вы, вероятно, обнаружите, что прозрачный прокси не будет выполнять перезаписи данных по понятным причинам.)

0

спасибо за этот намек AlBlue. Тем временем я пытаюсь использовать NSScanner. Я предполагаю, что провайдер разбивает html-код, когда он отправляется на мобильное устройство.

Смежные вопросы