2013-01-08 57 views
0

我是Android應用程序開發的初學者。我想確認我的方法是否正確,並根據Android世界中的最佳實踐進行確認。我有一個需要文本數據(無圖形,視頻)的Android應用程序。數據來自基於REST的Web服務,如JSON字符串。我使用HttpGet對象使用此Web服務,使用JSONArray解析json字符串並顯示數據。從Android應用程序中消費Web服務

所有這一切都發生在按鈕點擊。

我的問題是:

  1. 有沒有更好的(或Android風格)的方式做同樣的?
  2. 檢索圖像內容並將其發佈到基於REST的Web服務的首選方法是什麼?

任何幫助最受讚賞。

感謝

回答

1

請發現我的內聯通信, 所有這一切發生在按鈕點擊。

我的問題是:

有沒有更好的(或Android風格)的方式做同樣的?

在異步任務或服務中觸發Webservice調用的理想方法,這樣您的UI線程將不會被阻塞,直到HTTP觸發並獲得響應。

什麼是檢索和發佈圖形內容到基於REST的Web服務的首選方法?

當您嘗試從後端檢索圖形內容時,圖形內容通常是base64。 請參閱此示例:http://androidtrainningcenter.blogspot.in/2012/03/how-to-convert-string-to-bitmap-and.html

用於將圖形張貼到服務器上 我假設您知道要上載的圖像的路徑和文件名。將此字符串添加到您的NameValuePair,並使用圖像作爲鍵名稱。

發送圖像可以使用HttpComponents庫完成。使用依賴包下載最新的HttpClient(當前爲4.0.1)二進制文件,並將apache-mime4j-0.6.jar和httpmime-4.0.1.jar複製到您的項目中,並將它們添加到您的Java構建路徑。

您將需要將以下導入添加到您的班級。

import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; 現在您可以創建一個MultipartEntity來將圖像附加到您的POST請求。以下代碼顯示瞭如何執行此操作的示例:

public void post(String url,List nameValuePairs){HttpClient httpClient = new DefaultHttpClient(); HttpContext localContext = new BasicHttpContext(); HttpPost httpPost = new HttpPost(url);

try { 
    MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 

    for(int index=0; index < nameValuePairs.size(); index++) { 
     if(nameValuePairs.get(index).getName().equalsIgnoreCase("image")) { 
      // If the key equals to "image", we use FileBody to transfer the data 
      entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File (nameValuePairs.get(index).getValue()))); 
     } else { 
      // Normal string data 
      entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue())); 
     } 
    } 

    httpPost.setEntity(entity); 

    HttpResponse response = httpClient.execute(httpPost, localContext); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

}

希望這有助於!

0

嘿請參閱本link,你在Android應用程序需要,這將更好地培養你解析JSON數據。加載圖形需要一些延遲加載機制,您可以從here中引用它。