2013-08-22 59 views
1

我打算使用帶有Play2 HTTP client's methods的Iteratees。 Play2的docs相當複雜。如何使用Play2採用迭代器的HTTP客戶端的方法?

採取了這些方法Play2(此GET method):

/** 
* 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 method

/** 
* 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]

回答

0

您希望您的結果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]]())) 

,其中數據是要與PUT請求發送數據。它可以是字符串或字節數組等。

注:我沒有試過這段代碼,但是這會給你正確的方向。