问题标签 [nsurlconnection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2145 浏览

iphone - NSURLConnection sendSynchronousRequest:使用 POST 时失败

我正在使用自定义 NSURLCache 来拦截对某些网页的调用,以便动态修改它们。在 cachedResponseForRequest 内部:我修改了请求,然后使用 sendSynchronousRequest 将其发送出去。在您尝试提交表单之前,这非常有效。如果有发布数据,它会失败。

如果我删除 HTTPBody 并将请求设置为 GET,它会成功。但我需要它与 POST 一起使用。如果我异步发送请求,它也可以工作,这就是为什么我无法弄清楚同步请求失败的原因。

这是我的堆栈跟踪:

日期/时间:2010-01-17 12:37:55.416 -0800
操作系统版本:iPhone OS 3.1.2 (7D11)
报告版本:104

异常类型:EXC_BAD_ACCESS (SIGBUS)
异常代码:KERN_PROTECTION_FAILURE at 0x0000001c 崩溃
线程:2

Thread 2 Crashed:
0 CFNetwork 0x0000b4e4 HTTPMessage::copyHeaderFieldValue(__CFString const*) + 18
1 CFNetwork 0x0000b4c8 CFHTTPMessageCopyHeaderFieldValue + 16
2 CFNetwork 0x0000e022 HTTPProtocol::createStream() + 328
3 CFNetwork 0x0000de8a HTTPProtocol::createAndOpenStream() + 458
4 CFNetwork 0x0000cba2 HTTPProtocol ::startLoad() + 278
5 CFNetwork 0x0000c8da URLConnectionLoader::loaderScheduleOriginLoad(_CFURLRequest const*) + 216
6 CFNetwork 0x0000c77c URLConnectionLoader::loaderScheduleLoad(_CFURLRequest const*) + 280
7 CFNetwork 0x0000c5e6 URLConnectionLoader::LoaderConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo , long) + 134
8 CFNetwork 0x0000c53a URLConnectionLoader::processEvents() + 60
9 CFNetwork 0x0000a892 URLConnection::multiplexerClientPerform(RunLoopMultiplexer
) + 30
10 CFNetwork 0x0000a812 MultiplexerSource::perform() + 86
11 CFNetwork 0x0000a7b2 MultiplexerSource::_perform(void*) + 2
12 CoreFoundation 0x000573a0 CFRunLoopRunSpecific + 1908
13 CoreFoundation 0x00056c18 CFRunLoopRunInMode + 44
14 基金会 0x0005a998 +[NSResourceLoadConnection:] +[NSResourceLoadConnection:]内部 172
15 基础 0x00053ac6 -[NSThread main] + 42
16 基础 0x00001d0e __NSThread__main__ + 852
17 libSystem.B.dylib 0x0002b7b0 _pthread_body + 20

如您所见,copyHeaderFieldValue 导致了崩溃。我不明白为什么。

0 投票
4 回答
6669 浏览

nsurlconnection - 可变的 NSHTTPURLResponse 或 NSURLResponse

我需要修改 NSURLResponse 中的响应标头。这可能吗?

0 投票
2 回答
3646 浏览

iphone - NSURLConnection 协议在哪里?

NSURLConnection 的文档说有像这样的委托方法

但是文档没有提到要实现哪个委托协议。好吧,我假设委托没有任何协议,所以一切都是可选的?

0 投票
4 回答
23324 浏览

ios - 从 url 下载文件并保存到 iPhone 上的资源

是否可以通过编程方式从 Internet 将文件(即 sqlite 数据库文件)下载到您的 iPhone 应用程序中以供以后在应用程序中使用?

我正在尝试使用NSURLConnection,但无法保存文件。

这是我正在尝试的示例代码:

0 投票
1 回答
1478 浏览

iphone - 为什么 UITableView 不重新加载(即使在主线程上)?

我有两个基本上做同样事情的程序。他们读取 XML 提要并解析元素。这两个程序的设计都是使用异步 NSURLConnection 来获取数据,然后生成一个新线程来处理解析。在解析 5 个项目的批次时,它会回调主线程以重新加载 UITableView。

我的问题是它在一个程序中运行良好,但在另一个程序中运行良好。我知道解析实际上发生在后台线程上,并且我知道 [tableView reloadData] 正在主线程上执行;但是,在所有解析完成之前,它不会重新加载表。我难住了。据我所知……这两个程序的结构完全相同。这是来自应用程序的一些无法正常工作的代码。

如果您从上到下阅读此内容,您可以看到 NSURLConnection 何时完成我分离一个新线程并调用 parseFeedData。

在 did 结束元素委托中,我在调用主线程执行更新之前检查是否已解析 5 个项目。

最后,UIViewController 委托:

如果我在视图控制器委托触发以重新加载表时写入日志,并且当 cellForRowAtIndexPath 在重建表时触发时,日志看起来像这样:

parser:didParseBatch:
parser:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
parser:didParseBatch:
parser:didParseBatch:
parser:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
解析器:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
解析器:didParseBatch:
解析器:didParseBatch:
解析器:didParseBatch:
解析器:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath

显然,当我每次都告诉它时,tableView 并没有重新加载。

正常运行的应用程序的日志如下所示:

parser:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
parser:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
parser:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView: cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
解析器:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
解析器:didParseBatch:
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath
tableView:cellForRowAtIndexPath

0 投票
2 回答
3147 浏览

cocoa - NSURL / NSURLRequest / NSURLConnection 理解哪些方案?

苹果表示,NSURL 是使用 RFC 1738(和其他一些)开发的。

现在 RFC 1738 仅指定 Web URL 具有方案和方案特定部分。

我想知道 NSURL 理解的所有方案。而且因为我将它与 NSURLRequest 和 NSURLConnection (所谓的“URL 加载器系统”)一起使用,所以我必须知道它们所理解的所有方案。

为什么?因为我只想知道。Apple 没有在文档中详细介绍它,只是说遵守 RFC 1738。这说明了很多,也没有说明什么。

0 投票
1 回答
954 浏览

php - 帮助获取 NSURLConnection 进度

该应用程序正在下载由服务器生成的文件(plist)。服务器需要很长时间才能生成文件,所以我希望能够显示进度(可能查看 UIProgressView,但这并不重要)。

由于我正在下载的文件在请求开始时尚未创建,因此我们不知道expectedContentLength. 但是,我有办法从 [PHP] 脚本本身提供进度更新。我正在使用ob_flush()文件中的每一行来执行此操作,这在浏览器中运行良好。

但是当我从应用程序发出请求时,我只是connection:didReceiveData:在脚本完成执行后才接到一个电话,所以这没什么用。

所以我的问题归结为:
如何从我的应用程序中获取这样一个 php 脚本的进度?

我不介意向服务器发送 2 个请求,第一个请求生成文件并在执行此操作时提供更新,然后另一个请求下载实际文件。

由于在请求完成之前没有调用我的 NSUrlConnection 委托方法,所以我的脚本需要做什么来触发这些方法?

0 投票
2 回答
1908 浏览

iphone - NSOperation 用于在解析数据时绘制 UI?

希望你们能帮助我:)

在主线程中,我创建了一个 NSOperation 并将其添加到队列中。该操作所做的是使用 NSURLConnection 连接到数据服务器,保存收到的数据并解析它。

操作.m

然后在这个 NSURL 委托方法中,我解析刚刚从服务器接收到的数据。

操作.m

在数据中,我可以找到诸如 screenItem、CellItem、TextItem 之类的项目,这些项目在到达时发送到主线程以绘制它们。(如果 itemTable 到达,我创建一个 UITableView,或者如果 itemWeb 到达,我创建一个 UIWebView)

使用它发送项目到主线程:

操作.m

然后在通知接收器中:

AppDelegate.m

我的问题是直到 NSOperation 完成后才绘制 UI。我认为 NSPertion 作为一个不同的线程,不会阻塞主线程,但相信这就是正在发生的事情。

这个问题的一些提示?

非常感谢阅读!

0 投票
1 回答
1562 浏览

iphone - iphone sdk:暂停 NSURLConnection?

在我的应用程序中,我让用户能够从服务器下载文件。为此,我使用 NSURLConnection。我想让用户能够通过点击一个按钮来暂停和恢复下载。除了调用取消方法然后创建一个新的 NSURLConnection 之外,我找不到任何方法来执行此操作。那么有没有一种优雅的方式来暂停 NSURLConnection?

谢谢

0 投票
1 回答
2296 浏览

iphone - NSURLConnection 不返回数据

我在这里有一个相当不寻常的问题。下面的代码运行良好,数据发送到源也很好,但是没有一个 NSURLConnection 触发器返回任何东西。唯一记录的项目是在发送请求的函数中。有什么想法吗?