我正在使用Android的前端,我正在使用Spring的REST客戶端庫將HTTP請求發送到REST Web服務。我已經在線閱讀示例,其中人們使用AsyncTask
來完成此操作,RestTemplate
的doInBackground
方法爲AsyncTask
,但我也讀過RestTemplate
在AsyncTask
之外使用的示例,即使在活動或片段中也是如此。使用其中一種方法有什麼意義嗎?從Spring REST服務接收Android中的響應
其次,當通過RestTemplate的exchange
或getForAllObject
接收到服務器的響應時,根據收到的數據我的客戶端應該做不同的事情。例如,如果我想搜索用戶,我應該收到User
對象,然後我的客戶端應該更新用戶片段/活動,但是如果我想登錄,我應該收到不同的數據,並且我的客戶端應該執行不同的後續任務。
如果我每次發送一個HTTP請求,然後收到響應時創建一個AsyncTask,我怎麼能區分後續任務需要完成客戶端?是使用枚舉的首選方法?例如,當我想從服務器獲取數據時,我可以實例化一個AsyncTask,並以參數execute
的形式傳遞參數enum,以指定要發送的HTTP請求以及枚舉來指定如何處理接收的數據。那麼我可以使用switch語句來調用基於枚舉的不同函數?
如果這一切都沒有意義,是否有一個更標準的方法來處理來自服務器的處理響應?
我還不確定這是如何工作的。如果我有一個函數發送一個GET請求和一個函數來發送一個POST請求,那麼這兩個函數是不是會實例化一個擴展AsyncTask以在後臺運行來發送請求並接收響應的類?那麼在調用'onPostExecution'的過程中,AsyncTask怎麼知道從哪裏開始,不知道最初的HTTP請求是POST還是GET請求?我需要爲我希望發送的每種類型的HTTP請求(一個用於登錄,一個用於獲取x數據,一個用於獲取y數據)擴展一個AsyncTask? – Biiiiiird
你必須有兩個獨立的異步任務。以UserSearchAsyncTask和UserLoginAsyncTask爲例。這兩個類都擴展了AsyncTask。然後在需要的地方每個班級通常,您有單獨的活動或片段來處理這兩種情況。 –