我使用以下代码检索网址:
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数据此错误消息的原因是什么?
答案 0 :(得分:1)
您要连接的HTTP服务器行为不端。它声明Content-Length
标头比实际发送的响应短。
这意味着type="text/javascript"></script>
不期望服务器发送的最后几个字节(包括字符串httpc
),因为它们违反了HTTP规范。 httpc
prints the warning message您何时收到不属于有效HTTP响应的意外字节的时间。
如果无法修复服务器,则可以忽略此警告。您还可以查看relaxed
httpc option,这可能会或可能不会解决此问题。