java流意外结束_android – java.net.ProtocolException:意外的流结束

我面临一个奇怪的问题,我无法调试它.我已经实现了上传数据流的逻辑,并且使用了Volley,我在HurlStack中定制了一点逻辑,addBodyIfExists api,因此可以处理“application / octet-stream”类型的主体.

我的逻辑是将进度发布给用户,以便可以更新UI以指示用户在上传中的进度,低于我的逻辑.

int toRead = length; // File length

byte[] data = new byte[4096];

connection.setDoOutput(true);

if(length != -1) {

connection.setFixedLengthStreamingMode(length);

} else {

connection.setChunkedStreamingMode(4096);

}

OutputStream os;

int i;

int count;

os = connection.getOutputStream();

int progress= 0;

try {

for(i = 0; (count= is.read(data)) > 0; ++i) { // is, is not null and contains a valid input stream

os.write(data, 0, count); // at this line am getting unexpected end of stream

progress+= count;

if(i % 20 == 0) {

rs.deliverProgress(progress, 0L);

progress= 0;

}

}

os.flush();

} finally {

if(is != null) {

is.close();

}

if(os != null) {

os.close();

}

}

在执行上面的代码时我得到了这个,虽然我已经验证,输出流不是null,输入流也没有,它在读取循环本身的第一次迭代中失败,我看到它已读取4096字节,然后尝试写入相同的内容.

java.net.ProtocolException: unexpected end of stream

at com.android.okhttp.internal.http.HttpConnection$FixedLengthSink.close(HttpConnection.java:326)

at com.android.okio.RealBufferedSink.close(RealBufferedSink.java:174)

at com.android.okio.RealBufferedSink$1.close(RealBufferedSink.java:142)

任何有关上述调试的帮助都将受到高度赞赏.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值