Erlang:使用套接字/ gen_tcp连接到API

时间:2014-10-26 11:29:34

标签: sockets ssl twitter erlang gen-tcp

我是erlang和编程的新手,我正在寻找一种方法,如果有方法的话,可以使用套接字连接到twitter API。 所以我想知道的是,无论如何都要在套接字中传递http请求/ URL吗?

我希望阅读或查看任何信息。 示例代码我可以看到gen_tcp,socket,ssl或者你认为最聪明的方法。 (连接到twitter /发送请求)。

除非我真的需要,否则我不想使用其他构建的库。

提前致谢, 埃拉赫

1 个答案:

答案 0 :(得分:0)

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

此外,还有很多第三方http客户端用于一般用途:

  1. lhttpc
  2. ibroswe
  3. hackney
  4. 要与API互动,我建议您查看gun。正如项目页面所说,它遵循下一个目标:

      

    Gun旨在提供与HTTP,SPDY兼容的易用客户端   和Websocket。

         

    枪始终连接。它将保持永久连接   服务器,一旦服务器关闭它就重新打开它,节省时间   对于进来的请求。

         

    所有连接都会自动监控,允许开发人员   专注于编写代码而不用担心。

    如果您需要有关gen_tcp模块和网络互动的更多常规信息,我建议您从this great book开始。

    <强> UPD: 更具体地说,在Twitter流API上(你的意思是this one?)。要读取流数据,您可以使用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}}
    4. 启动此类流后,您应该通过接收接收收到消息并根据Twitter流媒体协议进行处理。

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