4

我正在尝试通过 AFNetworking 设置 SPDY,但我不知道为什么会超时。

我已经在SPDY check上检查了我的服务器,一切看起来都很好。

我把这行代码放在我的initWithBaseURL:(NSURL *)url方法中

NSString *origin = [NSString stringWithFormat:@"%@:443",kAPIClientBaseURLString];
[SPDYURLConnectionProtocol registerOrigin:origin];

我收到的调试日志似乎没问题

2013-12-23 15:26:37.889 Proj[42859:70b] SPDY [INFO] register origin: <SPDYOrigin: 0x19156fa0>
2013-12-23 15:26:37.890 Proj[42859:420f] SPDY [DEBUG] origin registered: <SPDYOrigin: 0x19156fa0>
2013-12-23 15:26:37.892 Proj[42859:441b] SPDY [INFO] start loading https://api.proj.mx:443/2/ursers/launching_info?param1=1&param2=2

然后经过几秒钟的等待,我得到了

2013-12-23 15:28:07.994 Proj[42859:441b] SPDY [INFO] stop loading https://api.proj.mx:443/2/dr/drs?param1=1
2013-12-23 15:28:07.996 Proj[42859:441b] SPDY [WARNING] session connection error: Error Domain=SPDYSocketErrorDomain Code=6 "Unexpected end of stream." UserInfo=0x13e52710 {NSLocalizedDescription=Unexpected end of stream.}

如果我打印错误,它会显示为超时。

如果我删除 SPDY 集成(我在上面写的 2 行),一切都会正常进行。

我真的不知道发生了什么,将不胜感激任何帮助和意见。

谢谢。

我更改了网址以避免隐私和安全问题。

4

2 回答 2

2

CocoaSPDY 库需要一个服务器,该服务器要么通过专用端口使用 SPDY,要么能够在通过新建立的连接接收到 SETTINGS 帧时动态切换到 SPDY 管道。

据我所知,GFE 目前没有做任何这些事情,这意味着不幸的是,目前 Google API 端点不支持 CocoaSPDY 库。

你控制自己的服务器吗?如果是这样,很可能默认情况下它依赖 NPN 来建立协议,而您希望将其配置为在应用程序连接到它时简单地说 SPDY。

于 2013-12-26T23:40:39.513 回答
1

您的服务器是否支持 SPDY?

尝试在socket:willDisconnectWithError:委托方法中设置断点。您可以检查[socket unreadData]以查看任何未读数据。

如果这没有为您提供任何有用的信息,请尝试实现(并记录)其他委托方法

于 2013-12-24T22:23:29.410 回答