2016-06-08 20 views
0

我試圖讓Scala中使用netty.IO一個HTTP響應(JSON)的物體阻擋網狀IO(阻塞,不異步)使用Scala的

大多數示例之類的東西,我覺得是Java和我似乎無法找到一種方法來「迴應http身體」的迴應。我總是以響應代碼或不是身體的對象的.toString結尾。

下面是我到目前爲止

def getRestContentFromNetty(url:String) : String ={ 
// IO.netty! 

    val response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK); 
    response.headers().set(Names.CONTENT_TYPE, accept_val).set(Names.AUTHORIZATION, basic_auth) 

    val bbuf = Unpooled.copiedBuffer("{\"jsonrpc\":\"2.0\",\"method\":\"calc.add\",\"params\":[1,2],\"id\":1}", StandardCharsets.UTF_8); 
    response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, bbuf.readableBytes()); 
val q = response.content().clear().writeBytes(bbuf); 
    logInfo(response.getStatus.toString)// -> this logs "200 OK", so the response seems good. 

    q.toString 

    } 

這將返回 「UnpooledHeapByteBuf(ridx:0,widx:59,上限:64)」,而不是身體

什麼是非常重要的概念,我在這裏失蹤?

回答

0

如果你要打印的ByteBuf爲字符串,需要使用:

q.toString(Charset)