2010-04-23 80 views
1

我的腳本通過httpConnection獲取xml並保存到持久存儲。那裏沒有問題。 然後我遍歷保存的數據來組成一個圖像url的列表通過隊列獲取。如何通過HttpConnection將圖像保存到黑莓設備?

每個請求調用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具體的問題時,我總是覺得:沒什麼。

問題是,每個示例或帖子都假定您知道有關該平臺的所有信息。 下面是一個簡單的問題:哪一行代碼將讀取輸出流寫入黑莓設備?什麼路徑?如何在以後檢索它?

我有這樣的代碼,我不知道,如果它沒有做任何事情,因爲我不知道它是理應寫入或者如果這是即使它是做什麼的都:

**文件名確定在一個基於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的文檔沒有具體說明這一點,也沒有讓它很容易開始搞清楚。 這個問題似乎沒有解決在這個論壇上,或其他人我搜查。

謝謝

+0

順便說一句,作爲答案下面的附加信息。我不知道爲什麼SO限制評論的內容。在許多情況下,它是有限的。 – Kai 2010-04-26 23:21:23

回答

2

您需要使用Java FileOutputStream來完成寫入。在從InputStream中讀取數據(將呼叫上方的outputFinal移動到關閉狀態)後,您還需要關閉連接。您可以輕鬆找到有關FileOutputStream的各種示例。

查看here瞭解更多。請注意,爲了使用FileOutputStream,您的應用程序必須進行簽名。