gpt4 book ai didi

android - java.net.协议(protocol)异常 : unexpected end of stream

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:14 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,我无法调试它。我已经实现了上传数据流的逻辑并且正在使用 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();
}

}

在执行上面的代码时得到这个,虽然我已经验证,输出流不为空,输入流也不为空,它在读取循环本身的第一次迭代中失败,我看到它已经读取了 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)

他将不胜感激对以上调试的任何帮助。

最佳答案

This可能对你有帮助:

当预期的字节数(通常在响应的内容长度 header 中设置)大于响应中的实际数据时,FixedLengthInputStream 会抛出该异常。检查内容长度 header 是否正确。 (如果您为内容长度提供自己的值,请确保它是正确的。)

查看设置输入流的代码会有所帮助。

关于android - java.net.协议(protocol)异常 : unexpected end of stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com