简单问题: 我可以使用NSInputStream从流API获取数据吗?
如果是这样,有人可以勾勒出它的样子。
我尝试了类似
的内容_twitterStream = [[NSInputStream alloc]initWithURL:[NSURL URLWithString:@"https://sitestream.twitter.com/1.1/site.json"]];;
_twitterStream.delegate = self;
[_twitterStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
并添加了委托方法,但这不起作用。我意识到我需要指定我需要的用户,但是,上面的代码是我到目前为止。
谢谢!
答案 0 :(得分:1)
一种方法是使用输入流,我不认为你能够轻松地将其拉出来,因为连接到流式api需要几个关键的http请求标头。
CFReadStreamRef readStream;
CFStreamCreatePairWithSocketToHost(nil, (CFStringRef)@"Your IP Here", PORT_NUMBER, &readStream, nil);
self.stream = (__bridge NSInputStream *)(readStream);
[self.stream setDelegate:self];
[self.stream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
是使用输入流连接到主机服务器的典型模式。 另一种方法是像你一样直接点击URL。
这些方法的问题在于它们无法解决身份验证问题。
我发现最简单的方法是使用NSURLSession任务并设置正确的请求标头。然后开始在sessionDataDelegate中接收数据包。
生成Twitter OAuth标题可能比前列腺检查更糟糕(相信我)。
https://dev.twitter.com/oauth/overview/authorizing-requests
这是一个演示项目,我在其中点击了流并在桌面视图中搜索了推文。