По какой-то причине тело ответа http при запросе этого изображения содержит часть mime (части mime полезны для помещения нескольких файлов в один ответ). В этом ответе есть только одна часть пантомимы, поэтому она в основном бесполезна.
В пакете javax.mail есть код, который вы можете использовать для правильного разбора, если хотите, но это не очень хороший API, imho.
Кроме того, есть несколько способов, которыми вы могли бы взломать это самостоятельно. Поскольку есть только одна часть MIME, вы можете просто выбросить данные из начала вашего входного потока, пока не увидите два символа новой строки в строке (байты равны 10). Это должно сработать, поскольку предполагается, что заголовки MIME должны быть 7-битными ascii, iirc, поэтому не нужно беспокоиться о кодировке символов.
Вот пример кода:
URLConnection conn = urlNorthView.openConnection();
InputStream in = conn.getInputStream();
String contentType = conn.getHeaderField("Content-Type");
if (!"image/jpeg".equals(contentType)) {
// hack: assuming it's mime if not a raw image
int one = in.read();
if (one == -1) {
// stop??
}
int two = in.read();
while (two != -1 && !(two == 10 && one == 10)) {
one = two;
two = in.read();
}
}
// if it was mime, we've stripped off the mime headers
// and should now get the image
inputStream2Disk(in);
Редактировать: дерьмо, вместо двух \ n вы увидите два \ r \ n или байты 0x0d, 0x0a, 0x0d, 0x0a. Выбрасывание данных до тех пор, пока вы не увидите, что этот образец оставлен читателю в качестве упражнения;)