使用Scala确定网页响应的大小

时间:2013-02-26 08:06:26

标签: http scala

我有一个任务,我需要确定存储网页内容需要多少缓存空间,我必须在Scala中完成所有操作,我正在学习。我知道我可以通过HTTP HEAD请求获得所需的信息,但是根据我的阅读,似乎我需要一个外部库。

是否可以在不使用HTTP请求的情况下下载HTTP标头,并仅使用Scala(不调用Java代码)提取所需信息?

2 个答案:

答案 0 :(得分:1)

如果您不需要使用第三方库,那么解决方案可能是使用Source.fromURL来获取页面,然后计算其大小。

希望这会有所帮助;)

答案 1 :(得分:0)

如果没有您的限制,只有Scala可以使用我会说:使用Async-Http-ClientAsyncHandler并在onHeadersReceived被调用后立即停止。

如果没有外部库,您可以尝试模仿HTTP客户端正在做什么。以下是telnet会话示例:

$ telnet www.google.com 80
HEAD / Trying 173.194.40.20...
Connected to www.google.com.
Escape character is '^]'.
HEAD / HTTP/1.1
Host: www.google.com

HTTP/1.1 302 Found
Location: http://www.google.ch/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=c2b92507b9088226:FF=0:TM=1361870408:LM=1361870408:S=mbY_Qws86Z75gPAk; expires=Thu, 26-Feb-2015 09:20:08 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=dAFEWKT5vk9HWP1sTF6Oo49jv0sRV7_49ewSgD3fYRiTjHqlUasKl7Jz86SnJhtS-o9zU9raxwCLhdfvEwdwl9imRwONMBTDBKDXtJhFufLCnAoOKgDQetv0A5FTN3Da; expires=Wed, 28-Aug-    2013 09:20:08 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Date: Tue, 26 Feb 2013 09:20:08 GMT
Server: gws
Content-Length: 218
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

(我输入的内容为HEAD / HTTP/1.1Host: www.google.com,还有其他退货。)

您可以尝试使用JVM的Socket类打开与服务器的TCP连接,并自行发送HEAD请求,如上例所示。