2014-01-26 4 views
3

Я использую следующий путь в моем распылении консервной сервер (с помощью спрей 1.2):Как служить Array [Byte] из spray.io

path("my"/"path"){ 
    get{ 
    complete{ 
     val buf:Array[Byte] = functionReturningArrayofByte() 
     println(buf.length) 
     buf 
    } 
    } 
} 

Длина буфера (и то, что печатается код выше) составляет 2,263,503 байт. Однако при доступе к my/path из веб-браузера он загружает файл длиной 10 528 063 байта.

Я думал, что распыление задает тип контента для приложения/октетного потока и длину содержимого, автоматически при заполнении Array[Byte]. Я не понимаю, что я могу делать неправильно.

EDIT

Я запустить небольшой тест и увидел, что массив байт выводятся в виде строки. Так, например, если у меня было два байта, например 0xFF и 0x01, то вместо двух байтов вместо строки будет [ 255, 1 ]. Я просто не знаю, как заставить его выводить исходное содержимое вместо строкового представления.

ответ

5

Обертывание buf как HttpData решает проблему:

path("my"/"path"){ 
    get{ 
    complete{ 
     val buf:Array[Byte] = functionReturningArrayofByte() 
     HttpData(buf) 
    } 
    } 
} 
+0

Спасибо большое за этот ответ! Оглядывался повсюду для него (включая документацию по распылению). Это решило это. – akauppi

 Смежные вопросы

  • Нет связанных вопросов^_^