1. 程式人生 > >Android開發學習——android與伺服器端資料互動

Android開發學習——android與伺服器端資料互動

複製程式碼
public class MainActivity extends Activity {

    private ListView lv;
    
    private List<Food>  data = new ArrayList<Food>();
    
    private MyAdapter mAdapter;
    
    private ProgressDialog  pd;
    
    private boolean isNextPage;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); pd = new ProgressDialog(this); mAdapter = new MyAdapter(this, data); lv.setAdapter(mAdapter); new
MyFoodTask().execute(); } private class MyFoodTask extends AsyncTask<String, Void, Map<String,Object>>{ @Override protected void onPreExecute() { pd.setMessage("Loading..."); } @Override
protected Map<String, Object> doInBackground(String... params) { String path = "http://10.0.2.2:8080/TestWeb/bbb"; HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(path); try { HttpResponse resp = client.execute(get); if(resp.getStatusLine().getStatusCode()==200){ HttpEntity entity = resp.getEntity(); String result = EntityUtils.toString(entity); Log.i("111", "result="+result); Map<String,Object> map = parseJson(result); return map; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(Map<String, Object> result) { pd.dismiss(); isNextPage = (Boolean) result.get("isNextPage"); data.addAll( (List<Food>) result.get("foodList") ); mAdapter.notifyDataSetChanged(); for(int i = 0;i<data.size();i++){ Food f = data.get(i); new MyImgTask().execute(f); } } private Map<String,Object> parseJson(String json) throws Exception{ Map<String ,Object> result = new HashMap<String,Object>(); List<Food> lists = new ArrayList<Food>(); JSONObject bigObj = new JSONObject(json); result.put("isNextPage", bigObj.getBoolean("isNextPage")); JSONArray array = bigObj.getJSONArray("foodList"); Food f = null; for(int i =0 ;i<array.length();i++){ f = new Food(); JSONObject smallObj = array.getJSONObject(i); f.setId( smallObj.getInt("id") ); f.setName( smallObj.getString("name") ); f.setDesc(smallObj.getString("desc")); f.setImgPath( smallObj.getString("imgPath") ); lists.add(f); } result.put("foodList", lists); return result; } private class MyImgTask extends AsyncTask<Food, Void, Food>{ @Override protected Food doInBackground(Food... params) { Food f = params[0]; String imgPath = "http://10.0.2.2:8080/TestWeb"+f.getImgPath(); HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(imgPath); try { HttpResponse resp = client.execute(get); if(resp.getStatusLine().getStatusCode()==200){ HttpEntity entity = resp.getEntity(); byte img [] = EntityUtils.toByteArray(entity); f.setImgData(img); } } catch (Exception e) { e.printStackTrace(); } return f; } @Override protected void onPostExecute(Food result) { mAdapter.notifyDataSetChanged(); } } } }
複製程式碼

相關推薦

Android開發學習——android伺服器資料互動

public class MainActivity extends Activity { private ListView lv; private List<Food> data = new ArrayList<Food>(); pr

AndroidJava伺服器資料互動和Java物件轉換成JSON物件

Ticket封裝成一個類 package com.model; public class Ticket { private int ticket_id; private int price; private int user

Android 下使用 JSON 伺服器 Servlet 傳遞資料

        在Android下,SDK已經封裝好了與JSON相關的操作,伺服器端也只要匯入相關JAR包即可,這裡先放上我的小demo原始碼,android端和servlet的demo分別在兩個資料

Android客戶伺服器簡單互動

客戶端程式碼: /** * 功能:通過Get向伺服器請求Json資料 * 說明:1.字串(一般用{}表示)與陣列(一般用[]表示)的解析方式是不一樣的,具體如下: * (1)如果返回的是Json字串,則使用JSONObject j

Android客戶伺服器資料互動的第四種方法

        網上有很多例子來演示Android客戶端和伺服器端資料如何實現互動不過這些例子大多比較繁雜,對於初學者來說這是不利的,現在介紹幾種程式碼簡單、邏輯清晰的互動例子,本篇部落格介紹第四種:         一、伺服器端:         程式碼1:新增名為“A

Android開發學習-Android UI框架

喜歡就點選上面藍色字,更多精彩! 今天看到一套好看,好用的Android UI框架,分享給大家。 1/6 QMUI Android UI 一個旨在提高 UI 開發效率 快速產生專案 UI 的前端框架 QMUI Web 是一個專注 Web UI 開發,幫助開發者快速實現特定的一整套

伺服器客戶資料互動---JSON格式理解

伺服器與客戶端資料互動 伺服器返回到客戶端的就是一個字串,客戶端若希望拿到一個物件型別,則需要一種規則來儲存字串。 所以js中出現了json語法來定義物件格式。 伺服器將資料序列化為json格式字元返回給客戶端,此時客戶端再將這個字串轉換為物件 JS

Go語言模擬http伺服器客戶資料互動

廢話少說:實現伺服器列印輸出客戶端的請求引數,客戶端列印伺服器返回的資料 伺服器: package main import ( "flag" "fmt" "net/http" ) func main() { host := flag.String("ho

web開發中客戶伺服器互動

比如在瀏覽器上網的過程,首先,在位址列輸入要訪問的網址,確定,等一會之後,就會看到自己想要的東西。那麼這個過程,其實是瀏覽器和伺服器互動的一個過程。其實瀏覽器主要兩個功能,合理美觀的顯示資料和收集資料(交給後臺伺服器進行邏輯處理)。客戶端根據使用者輸入的地址資訊請求伺服器,伺

Wb開發基礎-Http1.0協議-客戶伺服器互動

    Web開發的學習已經有一段時間了,但是對於Web開發來講,最基礎的來講還要屬Http協議,因為它是Web瀏覽器和伺服器之間進行一問一答互動過程必須遵守的規則。     當然,基本步驟大家都瞭解

Vue.js 學習筆記之三:伺服器資料互動

顯而易見的,之前的`02_toDoList`存在著一個很致命的缺陷。那就是它的資料只存在於瀏覽器端,一但使用者關閉或重新載入頁面,他之前加入到程式中的資料就會全部丟失,一切又恢復到程式的初始狀態。要想解決這個問題,就需要 Web 應用的前端在適當的時間將獲得的輸入資料儲存到後端伺服器上,然後在需要時再從伺服器

一次有趣的ant-design資料互動的使用

最近有個需求是新聞時間排序與點選量排序,資料庫中儲存的新聞是按照時間順序排序的,從後臺資料中取出資料,在前端進行頁面展示即可。 我用到了ant-design中的Tabs切換頁,樣式大概如下圖。 其實這個專案裡面最令我欣喜的是reducer中介軟體的封裝,無需通過fetch請求資料這些,而是使用另外的封裝中介

Unity3D 通過GetPost方式伺服器進行互動

<p style="padding-top: 10px; padding-bottom: 10px; margin-top: 0px; margin-bottom: 0px; line-height: 25px; color: rgb(51, 51, 51); fon

手機App客戶伺服器互動

一般流程 客戶端向服務端傳送請求,服務端處理後返回內容給客戶端,客戶端處理 建立HttpClient物件,並設定響應的引數。 HttpClient httpClient = new HttpClient(); // 設定 HttpClient 接收 Cookie

ActiveMQ訊息傳送機制以及ACK機制詳解 AcitveMQ是作為一種訊息儲存和分發元件,涉及到clientbroker資料互動的方方面面,它不僅要擔保訊息的儲存安全性,還要提供額外的

    AcitveMQ是作為一種訊息儲存和分發元件,涉及到client與broker端資料互動的方方面面,它不僅要擔保訊息的儲存安全性,還要提供額外的手段來確保訊息的分發是可靠的。 一. ActiveMQ訊息傳送機制     Producer客戶端使用來發送訊息的, Consumer客戶端用來消費

Android 開發】: Android客戶服務之間使用JSON互動資料

    在前面的兩講中,我們講解了JSON資料格式的一些基本知識,以及做一些小Demo,這一講我們在前面的基礎上來做一個綜合的可擴充套件的Demo,主要是針對Android客戶端解析服務端傳遞過來的JSON資料。整個Demo所作的操作如下圖所示 1. 服務端    服務端

Android 客戶伺服器進行資料互動(一、登入伺服器

概要 安卓APP要實現很多功能(比如登入註冊、發表評論等)時都必須要使用到網路資料互動。所以在學習了這部分內容後,就將其以最常見的登入過程為例整理出來,也方便跟我一樣的新手能迅速學習上手。 預期效果圖如下,輸入手機號和密碼,點選Login按鈕,上傳資料到伺

Android客戶伺服器的json資料互動(很詳細)

      Android客戶端與伺服器端的json資料互動,主要是通過json形式的資料互動,就是json的寫入和解析。  先看效果圖,我最討厭講東西,一個圖沒有的。 算了,看來我不是寫部落格的材料,寫不下去了,要排版之類的麻煩,大家還是直接去下載原始碼,裡面有大量的注

Android 開發】: Android客戶服務之間使用GSON互動資料

    前面我們有提到google的Gson技術的介紹[GSON 資料格式詳解],這一講我們來詳細學習一下Android客戶端與服務端之間使用GSON進行JSON資料的解析,關於GSON的技術我們已經在前面兩講中提到過,對GSON不瞭解的讀者可以先去看前面兩講的博文,這一講

Android 客戶伺服器進行資料互動(二、登入客戶

概要 Android客戶端分為User,HttpUtil,HttpCallbackListener,MainActivity四個部分。User model與服務端的一樣,一方面是用於本地使用者資訊的儲存model,另一方面也是為了保證構造URL時使用的key一