【问题标题】:HTTP GET from socket multiple events?来自套接字多个事件的 HTTP GET?
【发布时间】:2012-07-27 14:12:27
【问题描述】:

在使用 ProgressEvent.SOCKET_DATA 时,如何知道套接字服务器或 Web 服务器是否完成了 HTTP GET 请求的传输? 我用 socket.writeUTFBytes('GET /index.php HTTP/1.1\r\n'); 做我的套接字请求 但是“答案”是如此之大,以至于我得到了多个 ProgressEvent.SOCKET_DATA。我怎么知道它应该向我传输多少数据?或者当它完成传输时?甚至我会从这个请求中得到多少个progressEvents?到目前为止,我正在使用一个计时器来检查服务器是否仍在传输,但这不是一种非常干净的做事方式..

【问题讨论】:

    标签: actionscript-3 http sockets air


    【解决方案1】:

    我怎么知道它应该向我传输多少数据?或者当它完成传输时??

    如果是服务器发送的Content-length 标头,则通过读取该标头,或者等待服务器关闭连接,或者如果分块传输编码为,则通过读取直到遇到最后一个块 (0<CRLF><CRLF>)启用,或any of the other indications that a full response has been received

    为简单起见,请使用HTTPService,或者如果这不符合您的需要,请使用library that implements an HTTP client

    或者我会从这个请求中得到多少个progressEvents?

    没有办法说。

    【讨论】:

    • 谢谢,我会尝试 CRLF 方式 :)
    • @Eric 除非启用分块传输编码,否则它将无法工作。请不要只阅读我的回答中您喜欢的部分,而要尝试理解我在说什么:实现 HTTP 客户端并非易事且容易出错;您应该使用已经这样做过的人提供的库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2015-02-05
    相关资源
    最近更新 更多