Webページのコンテンツを保存するために必要なキャッシュスペースの量を決定する必要がある割り当てがあり、学習中のScalaですべてを実行する必要があります。HTTP HEADリクエストで必要な情報を取得できることはわかっていますが、読んだことから、そのための外部ライブラリが必要なようです。
HTTPリクエストを使用せずにHTTPヘッダーをダウンロードし、Scalaのみを使用して(Javaコードの呼び出しなしで)必要な情報を抽出することは可能ですか?
サードパーティのライブラリを使用する必要がない場合、解決策は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リクエストを自分で送信することができます。