我正在尝试使用SPDY for iOS app,它目前使用AFNetworking(2.1.0)来处理HTTP请求。服务器端,我正在使用Google App Engine(选中SPDYCheck),它是SPDY友好的。
以下是我在代码中集成SPDY的方法。
我正在使用AFHTTPRequestOperationManager
@interface MyClient : AFHTTPRequestOperationManager
我在initWithBaseURL:
- (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];
...
}
请注意,我的网址格式为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经验的人可以帮忙!!
答案 0 :(得分:3)
Apple确实不支持默认TLS实施中的NPN。但是有一些SPDY库使用OpenSSL(支持NPN)。
答案 1 :(得分:2)
不幸的是,Apple的TLS实现不支持Google App Engine使用的NPN。您可以在CocoaSPDY GitHub README。
中详细了解相关信息目前您无法将CocoaSPDY与Google App Engine一起使用。
答案 2 :(得分:0)
你可以吗? 我看到SPDY协议支持现在可以在OS X Yosemite和iOS 8上的NSURLSession中使用,并且由NSURLSession透明地支持。 详情请见:https://developer.apple.com/videos/wwdc/2014/ [基础网络的新功能] 但为什么它不起作用? 当我使用CocoaSPDY时,设置manager.session.configuration.protocolClasses = @ [[SPDYURLSessionProtocol class]];没关系;