【问题标题】:NSURLRequest returning null data (but only sometimes)NSURLRequest 返回空数据(但只是有时)
【发布时间】:2011-09-04 19:18:45
【问题描述】:

我正在尝试从 craigslist HTML 页面中提取一些数据,但我似乎遇到了一个奇怪的错误 - 每隔一段时间,我尝试使用 NSURLRequest 加载的页面会以某种奇怪的形式返回数据,当转换为可解析的字符串时,返回null。但是,我无法始终如一地重现它——它会突然停止工作,然后我会在一个小时后再次尝试它,它会完美地工作,然后一段时间后它会再次停止工作。有谁知道可能是什么原因造成的?我正在使用带有“didReceiveData”和“didReceiveResponse”委托方法的异步 NSURLRequest。如果我将 NSURLResponse 转换为 NSHTTPURLResponse 并检查响应代码,我会得到 200,这意味着没有问题。但是当我用响应数据初始化一个字符串时,它返回null,我显然无法解析它。

似乎最常这样做的网址是:http://sarasota.craigslist.org/app/

我已经尝试弄乱请求的 User-Agent 标头、缓存策略以及我能想到的一切……但似乎没有任何解决办法。

【问题讨论】:

  • 你看过响应数据了吗?它看起来像什么?
  • @Matt 如果我直接记录传入的增量数据,我会得到一堆乱码,这意味着那里有数据,但是如果我将其转换为带有[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] 的字符串然后记录它返回的字符串null
  • 嗨。我想知道 craigslist 是否检测到连接以解析数据并限制活动?我没有查看 craigs,但您是使用特定的 API 还是只是连接和抓取?
  • @MightyLeader 我认为可能也是这种情况,因为我只是抓取 HTML 页面并抓取它。然而,似乎只有几个 Craigslist 类别表现出这种行为 - 绝大多数其他类别在我每次提出请求时都没有可靠加载的问题。 (即我发布的示例 URL 是针对“电器”类别的——“电子”类别(以及大多数其他类别)始终可靠地加载,无论我多久点击一次)
  • 我猜你可以尝试检测空响应并重试?

标签: iphone null nsurlrequest


【解决方案1】:

如果有数据,但当您要求字符串为空时,我可能会怀疑您用于解码数据的字符串编码?是否有一个奇怪的角色只出现在 craigs 列表的广告标题中?

只是出于兴趣,您为什么不使用 rss 提要 - 它的格式可能更加一致/严格编码,因为它是 xml 而不是 html。

http://sarasota.craigslist.org/app/index.rss

【讨论】:

  • 因为 RSS 提要仅限于最新的 25、50 条……帖子。
  • 是的,字符串编码不正确。更改它可以解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 2021-06-12
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
相关资源
最近更新 更多