android-async-http開源項目對伺服器端返回JSON資料的處理

來源:互聯網
上載者:User

標籤:android   c   style   class   blog   code   

一、在JavaEE項目中搭建環境

1. 匯入相關jar包

2. 搭建相關的包和類


3.類中的方法簡單實現

User:

聲明以下屬性,並實現無參構造器和有參構造器,以及各自的get和set方法


UserDao:


UserDaoImpl:


JsonServlet:

<span style="white-space:pre"></span>protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// 來自於資料庫UserDao daoImpl = new UserDaoImpl();List<User> entities = daoImpl.findAll();// 把List集合轉換成一個json的資料格式JSONArray jsonArray = JSONArray.fromObject(entities);response.setContentType("application/json");// 響應類型 json的資料response.getWriter().write(jsonArray.toString());response.getWriter().close();}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}

二、Android項目中的對伺服器端返回JSON資料的處理

1. 匯入jar包


2.  添加許可權

3. 實現布局檔案

<!-- MVC模式中的V層 -->    <ListView        android:id="@+id/lv_users"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true" />
4.MainActivity.java中的主要內容見如下詳細代碼:

package www.csdn.net.activity;import java.util.ArrayList;import java.util.List;import org.apache.http.Header;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.JsonHttpResponseHandler;public class MainActivity extends Activity {private ListView lv_users;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv_users = (ListView) findViewById(R.id.lv_users);initData();//M層 //initData本身在一個子線程中處理}private void initData() {// 訪問伺服器端 擷取json資料// 建立用戶端對象AsyncHttpClient client = new AsyncHttpClient();String url = "http://172.16.237.227:8080/video/JsonServlet";Toast.makeText(this, "發送請求到伺服器", Toast.LENGTH_LONG).show();client.get(url, new JsonHttpResponseHandler() {// 返回JSONArray對象 | JSONObject對象@Overridepublic void onSuccess(int statusCode, Header[] headers,JSONArray response) {super.onSuccess(statusCode, headers, response);if (statusCode == 200) {//儲存陣列變數List<String> objects = new ArrayList<>();for (int i = 0; i < response.length(); i++) {try {// 擷取具體的一個JSONObject對象JSONObject obj = response.getJSONObject(i);objects.add(obj.getString("name"));} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//C控制層主要就是對資料處理ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, objects);//設定顯示的內容lv_users.setAdapter(adapter);// C空置}}});}}

5. 實現效果如所示:


三、補充

1. JSONObject對象可以通過get("屬性名稱"),getString("屬性名稱"),getInt("屬性名稱")等這些方法,來擷取指定屬性名稱的屬性值。

例如:在此案例中可以通過System.out.println("序號:" + obj.getInt("id") + "姓名:"+ obj.getString("name") +"---密碼:"+ obj.getString("pass") +"---"+ obj.get("regDate"));來驗證一下結果。

2. 出現的bug原因可能有:

Internet許可權沒加,伺服器沒啟動,訪問伺服器路徑有錯,沒有擷取控制項對象,設定顯示的內容應為lv_users.setAdapter()方法而不是setText()方法等。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.