2016-01-06 1 views
0

Я делаю HTTP-посылку Array [Byte] с помощью клиента веб-сервиса Play. По какой-то причине он устанавливает отрицательные байты в 63 (0b111111). Я отправил один и тот же поток байтов, используя Java-материал Java, и отправил его по байт-массиву правильно. Любые намеки?Scala Play WS.put Array [Bytes] установка отрицательных байтов на 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

я должен был установить набор символов изо-8859-1. В общем случае лучше использовать base64 для отправки байтового массива по строке; однако я не мог в контексте этой проблемы. Ниже приведен пример решения. Обратите внимание, что я раньше задавал тип содержимого для приложения/октета-потока, и он не работал. Исправление было дополнением charset = iso-8859-1.

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