我有一个任务,我需要确定存储网页内容需要多少缓存空间,我必须在Scala中完成所有操作,我正在学习。我知道我可以通过HTTP HEAD请求获得所需的信息,但是根据我的阅读,似乎我需要一个外部库。
是否可以在不使用HTTP请求的情况下下载HTTP标头,并仅使用Scala(不调用Java代码)提取所需信息?
答案 0 :(得分:1)
如果您不需要使用第三方库,那么解决方案可能是使用Source.fromURL
来获取页面,然后计算其大小。
希望这会有所帮助;)
答案 1 :(得分:0)
如果没有您的限制,只有Scala可以使用我会说:使用Async-Http-Client的AsyncHandler
并在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.1
,Host: www.google.com
,还有其他退货。)
您可以尝试使用JVM的Socket类打开与服务器的TCP连接,并自行发送HEAD请求,如上例所示。