网络服务器 NSURL NSURLConnection

Posted

技术标签:

【中文标题】网络服务器 NSURL NSURLConnection【英文标题】:Webserver NSURL NSURLConnection 【发布时间】:2011-12-09 23:21:49 【问题描述】:

好的,我正在尝试从我的网络服务器获取文件。但我对一些事情有点困惑。当我使用 NSURL 时,我可以使用这样的 url 获取我的 xml 文件:“localhost ...../bla.xml”。但我也在尝试测试一些东西......比如......如果我与网络服务器建立了开放连接,并且我失去了与互联网的连接,我的应用程序会发生什么?上面使用 NSURL 的方法,我还没有真正建立任何连接,它总是连接的对吗?还是我应该使用 NSURLConnection?

也许这有点令人困惑,因为我很困惑。我希望有人能给我一些我可以研究的信息。

谢谢。

【问题讨论】:

【参考方案1】:

看看 NSURLConnection 类。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html

创建连接对象并设置超时值,如果您失去连接或连接超时 NSURLConnection 委托方法:- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 被调用,您将收到该事件的通知。

您也可以使用NSURLConnection sendSynchronousRequest 方法,但强烈建议不要使用该方法,因为它会阻塞线程的运行。

【讨论】:

【参考方案2】:

您是否正在尝试访问文件的内容?如果是这样,您将使用以下内容。

NSError *error;
NSURL *url = [NSURL URLwithString:@"localhost/file.html"];
NSString *filecontents = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

NSString 对象filecontents 将包含您的字符串。

你不可能在这么短的时间内断开连接。如果没有连接,则会将错误应用到error

编辑: 如果您想始终保持与服务器的连接,那就另当别论了。 您必须使用 C 的 send()recv() 函数,您可以阅读有关 here 的信息。 我对它了解不多,我自己也在学习,所以你应该问别人如何设置服务器。但是您需要同时运行另一个程序。

【讨论】:

我可以访问我的文件,但你是对的。我不能在这么短的时间内失去联系。所以我有点想建立一个我“总是”连接的连接。我是不是走错了路?

以上是关于网络服务器 NSURL NSURLConnection的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发网络篇--NSURLConnection

网络请求不工作

关于web服务Json/rest api/Nsurl连接

iOS NSURL 请求状态码总是 200

iOS开发网络篇—NSURLConnection基本使用

iOS开发网络篇—NSURLConnection基本使用