我在使用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服务器,只是收到格式错误的请求错误。
我在这里缺少什么?
答案 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'