我正在为iOS应用程序尝试SPDY,它目前使用AFNetworking (2.1.0)来处理HTTP请求。服务器端,我使用的是Google (用SPDYCheck检查),它对SPDY友好。
下面是我如何将SPDY集成到我的代码中。
我用的是AFHTTPRequestOperationManager
@interface MyClient : AFHTTPRequestOperationManager我在initWithBaseURL:中嵌入了SPDY
- (id)initWithBaseURL:(NSURL *)url {
self = [super initWithBaseURL:url];
if (!self) {
return nil;
}
// SPDY Config
NSString *spdyURL = [NSString stringWithFormat:@"%@://%@:443",url.scheme, url.host];
[SPDYURLConnectionProtocol registerOrigin:spdyURL];
...
}请注意,我的url带有https://myapp.appspot.com/_ah/格式,所以我在传递到SPDY registerOrigin: spdyURL时将它重新格式化,看起来像https://myapp.appspot.com:443。
我想这就是我所需要的?但是,在添加SPDY代码之后,我无法发送请求。调试消息显示了以下错误:
error response from api/users/v1/is_token_valid :
Error Domain=NSURLErrorDomain
Code=-1001
"The request timed out."
UserInfo=0xdc2c250 {NSErrorFailingURLStringKey=https://myapp.appspot.com/_ah/api/users/v1/is_token_valid?
user_token=[a_token],
NSErrorFailingURLKey=https://myapp.appspot.com/_ah/api/users/v1/is_token_valid?
user_token=[a_token],
NSLocalizedDescription=The request timed out., NSUnderlyingError=0xf270e60 "The request timed out."}我一点也不知道。希望在iOS上有SPDY经验的人能帮上忙!
发布于 2014-03-07 12:18:10
不幸的是,苹果的TLS实现不支持NPN,而NPN是由Google使用的。你可以在CocoaSPDY GitHub自述上读到更多关于它的信息。
此时你不能在中使用CocoaSPDY。
发布于 2014-03-08 21:59:40
的确,在默认的TLS实现中,Apple不支持NPN。然而,有一些SPDY库使用OpenSSL (它支持NPN)。
发布于 2015-08-18 08:46:01
你觉得可以吗?我看到SPDY协议支持现在已经在NSURLSession和iOS 8上的NSURLSession中可用,并且被NSURLSession透明地支持。参见详细信息:https://developer.apple.com/videos/wwdc/2014/,什么是基础网络中的新内容,但为什么它不起作用?当我使用manager.session.configuration.protocolClasses=@[SPDYURLSessionProtocol时,设置CocoaSPDY类];没关系;
https://stackoverflow.com/questions/22240179
复制相似问题