用于Twitter Streaming API iOS的NSInputStream?

时间:2015-03-12 20:02:49

标签: ios twitter streaming nsinputstream

简单问题: 我可以使用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];

并添加了委托方法,但这不起作用。我意识到我需要指定我需要的用户,但是,上面的代码是我到目前为止。

谢谢!

1 个答案:

答案 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

这是一个演示项目,我在其中点击了流并在桌面视图中搜索了推文。

https://github.com/GregPrice24/TwitterStreamingAPI