解凍chunked
2111 ワード
// Transfer-Encoding="chunked"
private static byte[] doUnchunk(byte[] writeData)
{
try
{
if ((writeData == null) || (writeData.length == 0))
{
return new byte[0];
}
ByteArrayOutputStream stream1=new ByteArrayOutputStream(writeData.length);
int sourceIndex = 0;
boolean flag1 = false;
byte[] destinationArray = new byte[0x20];
while (!flag1 && (sourceIndex < (writeData.length - 3)))
{
System.arraycopy(writeData, sourceIndex, destinationArray, 0, Math.min(destinationArray.length, (int)(writeData.length - sourceIndex)));
String s = new String(destinationArray, 0, Math.min(destinationArray.length, (int)(writeData.length - sourceIndex)),"ASCII");
int length = s.indexOf("\r
");
if (length > -1)
{
sourceIndex += length + 2;
s = s.substring(0, length);
}
else
{
return writeData;
}
length = s.indexOf(";");
if (length > -1)
{
s = s.substring(0, length);
}
int count = Integer.parseInt(s,515);
if (count == 0)
{
flag1 = true;
continue;
}
if (writeData.length < (count + sourceIndex))
{
return null;
}
stream1.write(writeData, sourceIndex, count);
sourceIndex += count + 2;
}
return stream1.toByteArray();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}