我有一个任务,我需要确定存储网页内容需要多少缓存空间,我必须在 Scala 中完成这一切,我正在学习。我知道我可以通过 HTTP HEAD 请求获得所需的信息,但从我读过的内容来看,我似乎需要一个外部库。
是否可以在不使用 HTTP 请求的情况下下载 HTTP 标头并仅使用 Scala 提取所需信息(不调用 Java 代码)?
如果您不需要使用 3rd 方库,那么解决方案可能是用于Source.fromURL
获取页面然后计算其大小。
希望这可以帮助 ;)
如果没有您只能使用 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 请求。