我在喷雾罐服务器中使用以下路径(使用喷雾1.2):
path("my"/"path"){
get{
complete{
val buf:Array[Byte] = functionReturningArrayofByte()
println(buf.length)
buf
}
}
}
缓冲区的长度(以及上面代码打印的内容)是2,263,503字节。但是,从Web浏览器访问my/path
时,它会下载一个长度为10,528,063字节的文件。
我认为当使用Array[Byte]
完成时,spray会自动将内容类型设置为application / octet-stream,以及内容长度。我没有意识到我可能做错了什么。
修改
我运行了一个小测试,并且已经看到字节数组作为String输出。因此,例如,如果我有两个字节,例如0xFF和0x01,则输出(而不仅仅是两个字节)将是字符串[ 255, 1 ]
。我只是不知道如何输出原始内容而不是它的字符串表示。
答案 0 :(得分:5)
将buf
包装为HttpData可以解决问题:
path("my"/"path"){
get{
complete{
val buf:Array[Byte] = functionReturningArrayofByte()
HttpData(buf)
}
}
}