对于没有数据返回的网络摄像头,使用NSURLRequest + NSURLConnection似乎有点过分

时间:2012-09-12 15:26:54

标签: ios nsurlconnection nsdata nsurlrequest

所有

这可能看起来非常简单,但我已经浏览了URL加载系统程序指南和各种NSURL ....类,但没有找到我的答案。

我只是想从应用程序到网站进行一个简单的电话预订派对点:

NSString *path=[NSString stringWithFormat:@"http://www.myparty123.com/ireservedURL.asp?Nickname=%@&Seat=%i&Email=%@&Currentparty=%i",john,5432,john@yahoo.com,6598];
NSURL* reservationURL =[NSURL URLWithString:path];
NSData *call= [NSData dataWithContentsOfURL:reservationURL];   

这似乎是一种简单的方法,但我得到的警告是我没有使用“call”变量。使用NSData进行调用似乎有点过分,因为没有数据返回。

然而,创建NSURLRequest并启动NSURLConnection然后使用该请求实现委托似乎也是过度的。

我错过了什么。

由于 KMB

2 个答案:

答案 0 :(得分:5)

NSURLConnection有一个名为sendSynchronousRequest的方法:returningResponse:error:允许您从URL下载NSData而不实现NSURLConnection委托。

所以你的代码可以重写:

NSString *path = [NSString stringWithFormat:@"http://www.myparty123.com/ireservedURL.asp?Nickname=%@&Seat=%i&Email=%@&Currentparty=%i",@"john",5432,@"john@yahoo.com",6598];
NSURL *url = [NSURL URLWithString:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

您不会再收到警告,因为您没有将数据分配给无用的变量。如果您想知道响应是否成功,您可以创建一个NSURLResponse变量并将其传递给sendSynchronousRequest方法调用。

需要注意的是,此方法将阻止您调用它的任何线程。因此,如果您在UI线程上调用此选项并且下载需要10秒钟,则用户将无法与该应用程序进行交互。实现NSURLConnection委托或使用sendAsynchronousRequest:queue:completionHandler:方法不会阻止它们使用的线程。

您也可以将此代码包装在NSInvocationOperation中,并将其添加到NSOperationQueue或查看AFNetworking之类的内容。

答案 1 :(得分:0)

发送请求的最简单方法是[{1}}

+ (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error方法