尝试通过套接字发送HTTP请求

时间:2008-11-12 20:43:17

标签: actionscript-3 http sockets

我在使用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服务器,只是收到格式错误的请求错误。

我在这里缺少什么?

5 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:1)

结果我在请求后没有向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 \ n。无论如何,谢谢Brian。

编辑:谢谢格雷姆。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我浪费了很多时间来追踪Flash10和Linux的某些组合中使用writeMultiByte()的严重错误。我对使用writeMultiByte()非常怀疑。

我希望这会对你有所帮助。

答案 4 :(得分:0)

可能错了,'ascii'编码不受支持(参见http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/charset-codes.html) - 使用'us-ascii'