2016-01-06 126 views
0

我正在做一個數組[字節]使用Play的Web服務客戶端的HTTP放。出於某種原因,它將負數字節設置爲63(0b111111)。我使用Java的HTTP東西發送了相同的字節流,並正確地發送了字節數組。任何提示?Scala玩WS.put數組[字節]負數字節設置爲0b111111

下面是一個例子:

//Play Web service send bytes 
    val bytes = Array[Byte](0, -3, 2, ...) 
    WS.url(httpService).put(bytes) 


    //java send bytes 
    val j = new URL(httpService) 
    val con = j.openConnection().asInstanceOf[HttpURLConnection] 
    con.setDoOutput(true) 
    con.setRequestMethod("PUT") 
    val out = con.getOutputStream.asInstanceOf[ByteArrayOutputStream] 
    out.write(bytes) 
    out.close() 

    val input = con.getInputStream 
    while (input.available() > 0) input.read() 

    input.close() 
    con.disconnect() 
+0

請給我們一些代碼在這裏。 – marcospereira

回答

0

我必須設置的字符集ISO-8859-1。一般來說,最好使用base64通過線路發送字節數組;然而,我不能在這個問題的背景下。以下是解決方案的一個例子。請注意,我之前將內容類型設置爲application/octet-stream,並且不起作用。修正是charset = iso-8859-1加法。

WS.url(url).withHeaders("Content-Type" -> "application/octet-stream;charset=iso-8859-1")