我正在使用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()
答案 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")