【问题标题】:Trying to send an HTTP request over sockets尝试通过套接字发送 HTTP 请求
【发布时间】:2008-11-12 20:43:17
【问题描述】:

我在使用 Actionscript 3 的 Socket() 对象发送一个简单的 HTTP 请求时遇到问题。我的 onConnect 监听器如下:

function sConnect(e:Event):void {
    trace('connected');
    s.writeUTFBytes('GET /outernet/client/rss/reddit-feeds HTTP/1.1\r\n');
    s.writeUTFBytes('Host: 208.43.71.50:8080\r\n');
    s.writeUTFBytes('Connection: Keep-alive\r\n');
    s.flush();
}

使用数据包嗅探器,我可以看到请求确​​实被发送到服务器,但是数据包嗅探器不会像处理其他 HTTP 服务那样将协议识别为 HTTP。当我运行它时,服务器最终会断开我的连接。我尝试连接到其他简单的 Apache 服务器,却收到格式错误的请求错误。

我在这里错过了什么?

【问题讨论】:

    标签: actionscript-3 http sockets


    【解决方案1】:

    您必须在刷新之前向流中写入另一个“\r\n”,以告知 HTTP 服务器您已完成发送标头。

    【讨论】:

      【解决方案2】:

      事实证明,在我请求之后,我没有向 HTTP 服务器发送空行。原作品的以下小调整:

      function sConnect(e:Event):void {
          trace('connected');
          s.writeUTFBytes('GET /outernet/client/rss/reddit-feeds HTTP/1.1\r\n');
          s.writeUTFBytes('Host: 208.43.71.50:8080\r\n');
          s.writeUTFBytes('Connection: Keep-alive\r\n\r\n');
          s.flush();
      }
      

      注意最后一个 writeUTFBytes 之后的额外 \r\n。无论如何,谢谢布赖恩。

      编辑:谢谢格雷姆。

      【讨论】:

        【解决方案3】:

        尝试使用 ANSI/ASCII 而不是 UTF。编码可能是问题的原因。

        【讨论】:

          【解决方案4】:

          我只是浪费了很多时间来跟踪 Flash 10 和 Linux 与 writeMultiByte() 的某些组合中明显存在的严重错误。我会非常怀疑是否使用 writeMultiByte()。

          希望对你有帮助。

          【讨论】:

            【解决方案5】:

            可能是错误的,不支持“ascii”编码(请参阅http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/charset-codes.html) - 使用“us-ascii”

            【讨论】:

              猜你喜欢
              • 2012-05-27
              • 2011-06-10
              • 2014-10-26
              • 1970-01-01
              • 2021-09-06
              • 1970-01-01
              • 2013-05-14
              相关资源
              最近更新 更多