https 上的 NSURLConnection 同步请求
谁能告诉我如何同步调用 https 服务器?我可以使用以下委托方法在 https 服务器上执行异步请求。
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
但
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
我需要同步。
Can anyone tell me the way how I can make a synchronous call to the https server? I am able to do asynchronous request on https server using following delegate methods.
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
and
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
but I need to do synchronous.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
//对请求进行编码
//Encoding the request
在
NSUrlConnection
中应该可以很好地使用 https。如果您想提供凭据,则它们需要成为网址的一部分:(
https://username:[电子邮件受保护]/api/user.json
)。无法提供
NSURLConnection
委托,因此如果您需要一些非标准身份验证处理,则需要异步执行。in
NSUrlConnection
should work just fine with https.If you'd like to provide credentials, they need to be part of the url: (
https://username:[email protected]/api/user.json
).There's no way to provide a
NSURLConnection
delegate, so if you need some nonstandard authentication handling you'll need to do it asynchronously.我就是这样做的:
而不是
我基于包含的类创建了相同的方法实例,因为我们需要一个委托。并且不要使其成为单例,因此每个连接都有其自变量,因为如果我们不这样做,并且两个连接恰好在另一个连接完成之前被调用,那么接收到的数据和循环的处理将不可恢复地交织在一起。
这样我就可以创建一个 NSUrl 连接并处理它(以同步方式,我们将看到如何),所以我不必更改任何以前编写的代码。
诀窍在于 CFRunLoopRun() 和 CFRunLoopStop(CFRunLoopGetCurrent())
我希望它能帮助其他人在未来。
That's how i did it:
instead of
I made the same method instance based, on the containing class, since we will need a delegate. And don't make it singleton, so every connection has its independent variables, because, if we don't, and two connections happen to be called before the other finishes, then the received data and the handling of the loops will be intertwined irrecoverably.
This way i can create an NSUrl connection and handle it (in a synchronous way, we'll see how) so i don't have to change any of the previously written code.
The trick was in the CFRunLoopRun() and CFRunLoopStop(CFRunLoopGetCurrent())
I hope it helps someone else in the futur.