0

これは技術的にはこのスレッドの複製です:

正確な応答/ヘッダーを返しますか?

ただし、そこにあるコードは機能しないようです。ディスパッチの変更ログで、ハンドリングが微妙に変更されていることがわかりますが、私の人生では、これを機能させることができません。これは、ライブラリの問題ではなく、scala を理解する上での問題だと思います。

import dispatch._, Defaults._

// import com.ning.http.client.Response

object HTTPDownloader extends App {


  val goog: Req = host("google.com").secure

  val res = Http(goog.HEAD OK as.Response).option()

  print(res)
  Thread.sleep(5000)
}

コンテンツの長さを確認できるように、稼働していることがわかっている Web サイトからヘッダーを取得しようとしていますが、このスニペットをコンパイルするとエラーが発生します。

[error] ... Download.scala:14: type mismatch;
[error]  found   : dispatch.as.Response.type
[error]  required: com.ning.http.client.Response => ?
[error]   val res = Http(goog.HEAD OK as.Response).option()

import com.ning.http.client.{ Response => nonconflictingname } で代わりに client.Response をインポートしようとしましたが、「オブジェクト com.ning.http.client.Response は値ではありません」と表示されます。それが何を意味するのかわかりません。

4

2 に答える 2

1

応答オブジェクト全体を取得したいが、OK 以外のステータス コードが失敗した Future を返すことを気にしない場合は、次のようにすることができます。

val res = Http(goog.HEAD)
res onComplete{
  case Success(resp) =>
    val headers = resp.getHeaders
    ...
  case Failure(ex) => //handle fail
}

ステータス処理を待つ場合OK、次のようになります。

val res = Http(goog.HEAD OK(r => r))
于 2013-07-16T12:49:42.707 に答える
1

発送元のタイプを見て、問題に気づきました。私は少し逃した => ? エラーの必要な部分。

正解は次のようなものです

val res = Http(goog > as.Response( x => x.getHeaders)).option()

あなたがそれを言わない限り、それは何を返すか分からないので、あなたがそれについて考えるなら、これは完全に理にかなっています.

于 2013-07-15T17:06:36.027 に答える