如何通过HttpConnection将图像保存到Blackberry设备?

时间:2010-04-23 21:13:09

标签: image blackberry httpconnection

我的脚本通过httpConnection获取xml并保存到持久存储。没有问题。 然后我遍历保存的数据,以组成一个图像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特定问题时我总能找到同样的事情:没有。

问题在于每个示例或帖子都假设您了解平台的所有内容。 这是一个简单的问题:什么行代码将读取输出流写入黑莓设备?什么路?我如何在以后检索它?

我有这段代码,我不知道它是否有任何作用,因为我不知道它应该写在哪里,或者甚至是它在做什么:

** filename是基于名为。

的网址在循环上确定的
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 个答案:

答案 0 :(得分:2)

您需要使用Java FileOutputStream进行编写。您还需要在从InputStream读取数据后关闭连接(将outputFinal移动到您的调用之上)。您可以轻松找到有关FileOutputStream的各种示例。

有关详情,请参阅here。请注意,为了使用FileOutputStream,您的应用程序必须签名。