我有一個任務,我需要確定需要多少緩存空間來存儲網頁的內容,而且我必須在Scala中完成所有工作,在學習過程中。我知道我可以通過HTTP HEAD請求獲取所需信息,但從我讀過的內容看來,我需要一個外部庫。使用Scala確定網頁響應的大小
是否可以在不使用HTTP請求的情況下下載HTTP頭並僅使用Scala(不調用Java代碼)提取所需的信息?
我有一個任務,我需要確定需要多少緩存空間來存儲網頁的內容,而且我必須在Scala中完成所有工作,在學習過程中。我知道我可以通過HTTP HEAD請求獲取所需信息,但從我讀過的內容看來,我需要一個外部庫。使用Scala確定網頁響應的大小
是否可以在不使用HTTP請求的情況下下載HTTP頭並僅使用Scala(不調用Java代碼)提取所需的信息?
如果您不需要使用第三方庫,那麼解決方案可能是使用Source.fromURL
來獲取頁面,然後計算其大小。
希望這有助於;)
沒有你的限制,只有斯卡拉可以使用,我會說:使用Async-Http-Client的AsyncHandler
並立即停止onHeadersReceived
已被調用。
沒有外部庫,你可以嘗試模仿一個HTTP客戶端正在做什麼。下面是一個示例telnet
會議:(我輸入了HEAD/HTTP/1.1
,Host: www.google.com
,和一個額外的回報)
$ 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
你可以嘗試使用JVM的Socket類打開一個TCP連接到你的服務器如上例所示,發送HEAD請求。
你問FO此信息的服務器很可能只理解HTTP協議並沒有(因爲你已經知道了),特別是針對這種情況的方法。所以我會說:不,沒有辦法。爲什麼限制不使用java類? – drexin 2013-02-26 08:42:09
@drexin,導師說「Scala提供了一個優雅的解決方案」,所以首選解決方案只使用Scala。 – 2013-02-26 09:54:32
http://dispatch-classic.databinder.net/Two+Handlers+Are+Better+Than+One.html? – oluies 2013-02-26 10:06:59