1

Play2 HTTP クライアントのメソッドで Iteratees を使用するつもりです。Play2 のドキュメントは非常に複雑です。

これらの Play2 メソッド (このGET メソッド)を取得します。

 /**
 * performs a GET with supplied body
 * @param consumer that's handling the response
 */
 def get[A](consumer: ResponseHeaders => Iteratee[Array[Byte], A]):
   Future[Iteratee[Array[Byte], A]] =
     prepare("GET").executeStream(consumer)

およびこのPUT メソッド:

 /**
 * performs a PUT with supplied body
 * @param consumer that's handling the response
 */
 def putAndRetrieveStream[A, T](body: T)
   (consumer: ResponseHeaders => Iteratee[Array[Byte], A])
     (implicit wrt: Writeable[T], ct: ContentTypeOf[T]):
       Future[Iteratee[Array[Byte], A]] =
         prepare("PUT", body).executeStream(consumer)

getこのメソッドを呼び出して、応答の本文を取得するにはどうすればよいArray[Byte]ですか? そして、リクエストの本文でputAndRetrieveStream指定されたものを送信するようにメソッドを呼び出すにはどうすればよいですか?Array[Byte]

4

1 に答える 1

0

結果が必要なため、次Array[Byte]を作成する必要がありますIteratee[Array[Byte],Array[Byte]]

val resp  = req.get((r:ResponseHeaders => Iteratee.consume[Array[Byte]]()))
resp onComplete {
    case Success(iter) => iter match {
        case Done(bytes,rem) => do_something_with_bytearray(bytes)       
    }
    case Failure(t) => do_something(t)
}

同様に:

val resp = req.putAndRetrieveStream(data)((r:ResponseHeaders => Iteratee.consume[Array[Byte]]()))

data は、put リクエストで送信するデータです。文字列またはバイト配列などにすることができます。

注: 私はこのコードを試していませんが、これは正しい方向性を示します。

于 2013-08-22T12:44:56.583 に答える