Erlang:使用sockets/gen_tcp连接到API



我对erlang和编程很陌生,我正在寻找一种通过使用套接字连接到twitter API的方法,如果有方法的话。所以我想知道的是,有没有办法在套接字中传递http请求/URL?

我喜欢任何可以阅读或查看的信息。示例代码中,我可以看到gen_tcp、socket、ssl或您认为最明智的方法。(关于连接到twitter/发送请求)。

除非我真的需要,否则我不想使用另一个建成的图书馆。

提前感谢,Erlach

听起来您需要HTTP客户端库我看不出有任何理由通过TCP套接字和gen_tcp自己实现HTTP协议Erlang标准库已经包含一个名为httpc的库。

此外,还有大量用于通用目的的第三方http客户端:

  1. lhttpc
  2. ibroswe
  3. 哈克尼

对于与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}]).

之后,您将在进程邮箱中收到以下消息:

  1. 第一条消息将是{http, {Ref, stream_start, ResponseHeaders}}
  2. 接下来的消息将是{http, {Ref, stream, ResponseBodyChunk}}
  3. 最后一条消息将是{http, {Ref, stream_end, ResponseHeaders}}

在您启动这样的流之后,您应该只通过receive接收不协调的消息,并根据twitter流协议进行处理。

请参阅有关httpc库的文档。您真的不应该在这里使用gen_tcp套接字。

最新更新