InputStream requestStream = request.getInputStream();
if ((length = request.getContentLength()) != -1)
{
received = new byte[length];
requestStream.read(received, 0, length);
}
else
{
// create a variable length list of bytes
List<Byte> bytes = new ArrayList<Byte>();
boolean endLoop = false;
while (!endLoop)
{
// try and read the next value from the stream.. if not -1, add it to the list as a byte. if
// it is, we've reached the end.
int currentByte = requestStream.read();
if (currentByte != -1)
bytes.add((byte) currentByte);
else
endLoop = true;
}
// initialize the final byte[] to the right length and add each byte into it in the right order.
received = new byte[bytes.size()];
for (int i = 0; i < bytes.size(); i++)
{
received[i] = bytes.get(i);
}
}
您需要在顶部添加while
循环以获取所有字节。流将尝试读取尽可能多的字节,但不需要立即返回len
字节:
尝试读取多达len字节,但可能读取更小数目,可能为零。
if ((length = request.getContentLength()) != -1)
{
received = new byte[length];
int pos = 0;
do {
int read = requestStream.read(received, pos, length-pos);
// check for end of file or error
if (read == -1) {
break;
} else {
pos += read;
}
} while (pos < length);
}
编辑:修复时。
问题内容: 从InputStreams读取时,如何确定byte []使用什么大小? 什么时候使用小号vs大号?有什么区别?该数字是否要以1024为增量?如果它是网络vs磁盘的InputStream,是否会有区别? 非常感谢,我似乎在其他地方找不到明确的答案。 问题答案: 大多数人使用2的幂作为大小。如果缓冲区至少为512字节,则差异不大(<20%) 对于网络,最佳大小可以为2 KB至8 KB(基础
问题内容: 如果存在连接/代理错误,我正在尝试重试请求。由于某些原因,我不断收到此错误,无论尝试重试该请求,该错误似乎都无法恢复: 难道我做错了什么?我的第一个怀疑是http.Request以某种方式被消耗了,因此在下一次尝试中它不再是好东西。我应该管理副本吗? 问题答案: 问题在于在第一次调用Do()时将请求主体读到末尾。在随后对Do()的调用中,没有从响应主体读取任何数据。 解决方法是将主体阅
我尝试将元素映射到[]以获得角度。但如果我检查了对象的长度,则始终为0。。 屏幕如果I控制台.log(对象) 我做错了什么?
这就是我得到的: DOMNodeList对象([长度]=>0)
前文(10min):百度使用如流进行面试,今天出师不利,一开始面试官就听不到我声音了,进行一系列调整后还是不行,面试官很和蔼告诉我先进行设备检查,经检测确实不是我设备的问题,录音功能正常,后面加了面试官微信,如流进行屏幕共享,后台挂微信电话。刚调整好设备开始面试,面试过程中面试官网络也出现了波动(2min),等待了一会才能正常面试。 正文:一开始介绍了下百度产品质量部,然后开始自我介绍 问题一:说
我使用的是一个3D数组,下面的代码是我得到的数组索引超出界限的错误,下面是相同的代码:- 获取以下错误:- 线程“main”Java.lang.ArrayIndexOutOfBoundsException中出现异常:索引0超出了Array2d.TugasArray3.Main(TugasArray3.:27)得分Mid Test1 Ke-1