Scala Play WS.put Array [Bytes]将负字节设置为0b111111

时间:2016-01-06 00:12:13

标签: java scala http playframework

我正在使用Play的Web服务客户端进行数组[Byte]的HTTP put。由于某种原因,它将负字节设置为63(0b111111)。我使用Java的HTTP内容发送了相同的字节流,并通过字节数组正确发送。任何提示?

以下是一个例子:

    //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()

1 个答案:

答案 0 :(得分: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")