我对erlang和编程很陌生,我正在寻找一种通过使用套接字连接到twitter API的方法,如果有方法的话。所以我想知道的是,有没有办法在套接字中传递http请求/URL?
我喜欢任何可以阅读或查看的信息。示例代码中,我可以看到gen_tcp、socket、ssl或您认为最明智的方法。(关于连接到twitter/发送请求)。
除非我真的需要,否则我不想使用另一个建成的图书馆。
提前感谢,Erlach
听起来您需要HTTP客户端库我看不出有任何理由通过TCP套接字和gen_tcp
自己实现HTTP协议Erlang标准库已经包含一个名为httpc的库。
此外,还有大量用于通用目的的第三方http客户端:
- lhttpc
- ibroswe
- 哈克尼
对于与API的互动,我建议您看一下枪。正如项目页面所说,它遵循下一个目标:
Gun旨在提供一个易于使用的与HTTP兼容的客户端,SPDY和Websocket。
枪总是相连的。它将保持与服务器,在服务器关闭后立即重新打开,节省时间收到的请求。
所有连接都是自动监控的,允许开发人员专注于编写代码而不用担心。
如果你需要更多关于gen_tcp
模块和网络交互的一般信息,我建议你从这本很棒的书开始。
UPD:更具体地说,关于推特流API(你是指这个吗?)。要读取流式数据,您可以使用http客户端的流式接口:
ok = application:start(inets).
{ok, Ref} = httpc:request(get, {RequestURL, RequestHeaders}, [], [{sync, false}, {stream, self}]).
之后,您将在进程邮箱中收到以下消息:
- 第一条消息将是
{http, {Ref, stream_start, ResponseHeaders}}
- 接下来的消息将是
{http, {Ref, stream, ResponseBodyChunk}}
- 最后一条消息将是
{http, {Ref, stream_end, ResponseHeaders}}
在您启动这样的流之后,您应该只通过receive接收不协调的消息,并根据twitter流协议进行处理。
请参阅有关httpc库的文档。您真的不应该在这里使用gen_tcp
套接字。