2013-02-26 22 views
0

我有一個任務,我需要確定需要多少緩存空間來存儲網頁的內容,而且我必須在Scala中完成所有工作,在學習過程中。我知道我可以通過HTTP HEAD請求獲取所需信息,但從我讀過的內容看來,我需要一個外部庫。使用Scala確定網頁響應的大小

是否可以在不使用HTTP請求的情況下下載HTTP頭並僅使用Scala(不調用Java代碼)提取所需的信息?

+0

你問FO此信息的服務器很可能只理解HTTP協議並沒有(因爲你已經知道了),特別是針對這種情況的方法。所以我會說:不,沒有辦法。爲什麼限制不使用java類? – drexin 2013-02-26 08:42:09

+0

@drexin,導師說「Scala提供了一個優雅的解決方案」,所以首選解決方案只使用Scala。 – 2013-02-26 09:54:32

+0

http://dispatch-classic.databinder.net/Two+Handlers+Are+Better+Than+One.html? – oluies 2013-02-26 10:06:59

回答

1

如果您不需要使用第三方庫,那麼解決方案可能是使用Source.fromURL來獲取頁面,然後計算其大小。

希望這有助於;)

0

沒有你的限制,只有斯卡拉可以使用,我會說:使用Async-Http-ClientAsyncHandler並立即停止onHeadersReceived已被調用。

沒有外部庫,你可以嘗試模仿一個HTTP客戶端正在做什麼。下面是一個示例telnet會議:(我輸入了HEAD/HTTP/1.1Host: 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請求。