Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Scala中解压缩异步http客户端Gzip的HttpResponseBodyPart?_Java_Scala_Http_Gzip_Scala Dispatch - Fatal编程技术网

Java 在Scala中解压缩异步http客户端Gzip的HttpResponseBodyPart?

Java 在Scala中解压缩异步http客户端Gzip的HttpResponseBodyPart?,java,scala,http,gzip,scala-dispatch,Java,Scala,Http,Gzip,Scala Dispatch,因为Scala Dispatch 0.9.5似乎没有用于解压缩GZIP流的默认处理程序,所以我尝试将它的修改为.stream.Lines处理程序来处理传入数据。由于同一个项目也在使用Spray.io,我试图在HttpResponseBodyPart字节上使用它的gzip解压程序,但它抛出了一个异常。见下文: def onBodyPartReceived(bodyPart: HttpResponseBodyPart) = { if (state == CONTINUE) { v

因为Scala Dispatch 0.9.5似乎没有用于解压缩GZIP流的默认处理程序,所以我尝试将它的
修改为.stream.Lines
处理程序来处理传入数据。由于同一个项目也在使用Spray.io,我试图在
HttpResponseBodyPart
字节上使用它的
gzip解压程序
,但它抛出了一个异常。见下文:

def onBodyPartReceived(bodyPart: HttpResponseBodyPart) = {
    if (state == CONTINUE) {
      val decomp = new GzipDecompressor
      val bytes = decomp.decompress( bodyPart.getBodyPartBytes )
      onString(new String(bytes, charset))
    }
    state
  }
上述方法修改了以下内容(第23行):

它抛出了一个异常
java.util.zip.ZipException:不是GZIP格式的
对于那些想知道GZIP解压器是什么样子的人,这里是:

我知道这确实是一条被压缩的小溪。有解决办法吗?谢谢

更新 玩弄以下内容:

  val machine = new GZIPDecompressMachine
  val bytes = machine.write( bodyPart.getBodyPartBytes )
  onString(machine.stop().flatMap((a) => a).mkString)
GZIPDecompressMachine
来自这里:


它抛出了一个异常:
java.io.EOFException:ZLIB输入流意外结束
这里有什么想法吗?

你解决了这个问题吗?@gerasalus否定,但还没有查看0.11调度。在此期间,我暂时使用低级Java API来处理连接。