gpt4 book ai didi

ios - 对于没有数据返回的网络调用,使用 NSURLRequest+NSURLConnection 似乎有些过分

转载 作者:行者123 更新时间:2023-11-28 18:39:53 29 4
gpt4 key购买 nike

全部,

这可能看起来非常简单,但我已经浏览了 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,然后使用该请求实现委托(delegate)似乎也有些矫枉过正。

我错过了什么。

谢谢九巴

最佳答案

NSURLConnection 有一个名为 sendSynchronousRequest:returningResponse:error: 的方法,它允许您从 URL 下载 NSData 而无需实现 NSURLConnection 委托(delegate)。

所以你的代码可以重写:

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 委托(delegate)或使用 sendAsynchronousRequest:queue:completionHandler: 方法不会阻塞使用它们的线程。

您还可以将此代码包装在 NSInvocationOperation 中并将其添加到 NSOperationQueue 或查看类似 AFNetworking 的内容.

关于ios - 对于没有数据返回的网络调用,使用 NSURLRequest+NSURLConnection 似乎有些过分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391583/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com