2008-11-12 179 views
1

我无法使用Actionscript 3的Socket()对象发送简单的HTTP请求。我的onConnect听众低于:尝试通过套接字发送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'); 
    s.flush(); 
} 

使用数据包嗅探器,可以看我的要求确实会发送到服务器,但该数据包嗅探器无法识别的协议为HTTP喜欢它与其他HTTP服务呢。当我运行这个时,服务器最终断开了我的连接。我试图连接到其他简单的Apache服务器,只是得到格式错误的请求错误。

我在这里错过了什么?

回答

12

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

0

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

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。非常感谢Brian。

编辑:谢谢格雷姆。

0

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

我希望这可以帮助你。