Erlang错误在#Port上收到意外的tcp数据

时间:2014-04-30 13:01:34

标签: erlang

我使用以下代码检索网址:

geturl(Url)->
{ok, RequestId}=httpc:request(get,{Url,[{"User-Agent", "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10"}]}, [],[{sync, false}]),
  M = receive
        {http, {RequestId, {_HttpOk, _ResponseHeaders, _Body}}} -> ok 
      after 20000 ->
        not_ok
      end.
 io:format("httprequest to ~p: ~p~n",[UrlHTTP,M]).

有时我会看到以下错误输出:

httprequest to "http://www.afbudsrejser.dk": ok
=ERROR REPORT==== 30-Apr-2014::16:53:49 ===
Received unexpected tcp data on #Port<0.4432>
   Data:       <<"\" type=\"text/javascript\"></script>\r\n\t</body>\r\n</html>\r\n\n">>
   MFA:        undefined
   Request:    undefined
   Session:    {session,{{"www.afbudsrejser.dk",80},<0.4392.0>},
                        false,http,#Port<0.4432>,ip_comm,1,pipeline,true}
   Status:     pipeline
   StatusLine: undefined
   Profile:    httpc_manager

Erlang错误在#Port

上收到意外的tcp数据

此错误消息的原因是什么?

1 个答案:

答案 0 :(得分:1)

您要连接的HTTP服务器行为不端。它声明Content-Length标头比实际发送的响应短。

这意味着type="text/javascript"></script>不期望服务器发送的最后几个字节(包括字符串httpc),因为它们违反了HTTP规范。 httpc prints the warning message您何时收到不属于有效HTTP响应的意外字节的时间。

如果无法修复服务器,则可以忽略此警告。您还可以查看relaxed httpc option,这可能会或可能不会解决此问题。