Wifi vs. Edge / 3G和componentsSeparatedByString(NSString)

时间:2009-08-18 15:36:06

标签: iphone objective-c nsstring

有没有人知道为什么通过Wifi下载的html代码与使用Edge / 3G的相同网址内容不同?我在使用该功能时注意到了这一点,因为Wifi的输出比3G输出的线路多得多。分析代码我可以看到只检测到几个换行符。 这是代码:

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

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

FG

5 个答案:

答案 0 :(得分:1)

为什么你认为HTML的换行与你尝试用它做什么有任何关联? HTML中的换行符没有实际意义。

针对移动浏览器优化的网站通常会删除所有无关紧要的空白(包括换行符)以加快下载速度。除了浏览器嗅探之外,根据您连接的IP地址,服务器生成的结果可能存在差异,并且可能存在透明的HTML代理(对于http请求),您可能不知道3G网络做翻译。

总之,您不应该将任何重要性与HTML页面中的换行符存在相关联,如果您要通过移动网络,也不应期望您和站点之间没有透明代理。 (如果您可以在HTTPS中查看该站点,您可能会发现透明代理不会出于显而易见的原因重写任何数据。)

答案 1 :(得分:0)

由于您使用的是HTML,因此它可能与介入层在您的客户端信息中放置的内容有关。不同的服务器通常会根据他们认为您的功能发送不同的结果。对于移动浏览器尤其如此。

我建议拿出一个数据包嗅探器并查看流量。与愚蠢的集线器连接的笔记本电脑上的Wireshark是最好的,但这对于无线/ 3G来说会很棘手。您可以在目标(服务器)系统上运行它。特别是,查看您为两种不同配置发送的HTTP数据包的差异。

另一方面,您还可以检查收到的数据包内容是否相同。这会告诉你,你最终的东西是剥离东西。我不太可能想到,但也许可能。

答案 2 :(得分:0)

您的Wifi网络是否包含HTTP代理?

答案 3 :(得分:0)

没有Wifi没有代理。无论如何,我没有任何wifi问题,但有边缘/ 3G。我真的没想到那样的困难。 同时我认为问题是由我的提供商造成的。不幸的是,我无法嗅探数据包以比较Wifi和Edge / 3G之间的差异。

答案 4 :(得分:0)

感谢AlBlue的暗示。 同时我尝试使用NSScanner。我想提供商会在发送到移动设备时删除html代码。