Как сохранить изображения на устройстве Blackberry через HttpConnection? - PullRequest
1 голос
/ 24 апреля 2010

Мой скрипт извлекает xml через httpConnection и сохраняет в постоянное хранилище. Там нет проблем. Затем я перебираю сохраненные данные, чтобы составить список URL-адресов изображений для извлечения из очереди.

Каждый из этих запросов вызывает поток httpConnection, так что

...

public synchronized void run()
 { 
         HttpConnection connection = (HttpConnection)Connector.open("http://www.somedomain.com/image1.jpg");
         connection.setRequestMethod("GET");
         String contentType = connection.getHeaderField("Content-type");

         InputStream responseData = connection.openInputStream();
         connection.close();

         outputFinal(responseData, contentType);
}

public synchronized void outputFinal(InputStream result, String contentType) throws SAXException, ParserConfigurationException, IOException
 {

  if(contentType.startsWith("text/"))
  {
       // bunch of xml save code that works fine

  }
  else if(contentType.equals("image/png") || contentType.equals("image/jpeg") || contentType.equals("image/gif"))
  {
   // how to save images here?
  }
  else
  {
   //default
  }
 }

Я не могу найти хорошую документацию о том, как можно взять данные ответа и сохранить их в изображение, сохраненное на устройстве.

Может быть, я просто упустил что-то очень очевидное. Любая помощь очень ценится. Спасибо


Я попытался последовать этому совету и обнаружил то же, что и всегда, при поиске специфических проблем с BB: ничего.

Проблема в том, что каждый пример или сообщение предполагает, что вы знаете все о платформе. Вот простой вопрос: какая строка кода записывает поток вывода на устройство Blackberry? Какой путь? Как мне получить его позже?

У меня есть этот код, который я не знаю, если он что-то делает, потому что я не знаю, куда он, якобы, пишет или вообще это вообще делает:

** имя файла определяется в цикле на основе вызываемого URL.

FileOutputStream fos = null;
try
{
    fos = new FileOutputStream( File.FILESYSTEM_PATRIOT, filename );

    byte [] buffer = new byte [262144];
    int byteRead;
    while ((byteRead = result.read (buffer ))!=- 1)
    {
        fos.write (buffer, 0, byteRead);
    }

    fos.flush();
    fos.close();   
}
catch(IOException ieo)
{ 
}
finally
{
    if(fos != null)
    {
        fos.close();
    }
}

Идея в том, что у меня есть около 600 изображений, извлеченных с сервера. Мне нужно зациклить xml и сохранить каждое изображение на устройстве, чтобы при вызове сущности я мог извлечь связанное изображение - entity_id.png - из внутреннего хранилища.

Документация от RIM не определяет это, и при этом это не облегчает начало выяснения этого. Эта проблема, кажется, не решена на этом форуме или других, которые я искал.

Спасибо

1 Ответ

2 голосов
/ 24 апреля 2010

Вам потребуется использовать Java FileOutputStream, чтобы сделать запись. Вы также захотите закрыть соединение после чтения данных из InputStream (переместите outputFinal над вашим вызовом, чтобы закрыть). Вы можете легко найти всевозможные примеры, касающиеся FileOutputStream.

Подробнее см. здесь . Обратите внимание, что для использования FileOutputStream ваше приложение должно быть подписано.

...