【问题标题】:NSInputStream for Twitter Streaming API iOS?Twitter流API iOS的NSInputStream?
【发布时间】:2015-03-12 20:02:49
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 有几个角度可以解决这个问题。然而,它们都导致相同的关键问题,即身份验证。

标签: ios twitter streaming nsinputstream


【解决方案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

这是一个演示项目,我在其中点击流并出列在 tableview 中搜索推文。

https://github.com/GregPrice24/TwitterStreamingAPI

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2018-03-13
    • 2018-01-07
    • 2015-11-19
    • 2016-04-29
    相关资源
    最近更新 更多