天天看點

引用開源架構通過AsyncHttpClient處理get/post請求

找到下載下傳檔案的源碼,com包黏貼到項目中的src目錄下

引用開源架構通過AsyncHttpClient處理get/post請求

引入jar包到libs下

引用開源架構通過AsyncHttpClient處理get/post請求

1.建立異步請求端對象

2.發送get請求,(get請求參數含義:請求的url位址;異步請求的handler)

3.在成功請求裡(status:狀态傳回碼,headers:頭部請求資訊,responsebody傳回結果)設定控件内容

2.發送post請求,(get請求參數含義:請求的url位址;異步請求的handler)

3.封裝請求參數

4.在成功請求裡(status:響應狀态碼,headers:響應頭資訊,responsebody相應内容的位元組碼)設定控件内容

補充:

檢視幫助文檔我們知道,在post方法中傳遞參數時候可以建立requestparams的對象,put進你所想要賦的值。如下圖:

引用開源架構通過AsyncHttpClient處理get/post請求
引用開源架構通過AsyncHttpClient處理get/post請求
引用開源架構通過AsyncHttpClient處理get/post請求

http://blog.csdn.net/zhaoyazhi2129/article/details/26509763

    <uses-permission android:name="android.permission.internet"/>

package com.example.android_httpasync;  

import org.apache.http.header;  

import com.loopj.android.http.asynchttpclient;  

import com.loopj.android.http.asynchttpresponsehandler;  

import com.loopj.android.http.requestparams;  

import android.app.activity;  

import android.os.bundle;  

import android.text.textutils;  

import android.view.view;  

import android.widget.edittext;  

import android.widget.textview;  

import android.widget.toast;  

/** 

 * 通過開源架構asynchttpclient的get/post請求處理 

 * @author zhaoyazhi 

 * 

 */  

public class mainactivity extends activity {  

    private edittext et_username;  

    private edittext et_password;  

    private textview tv_result;  

    @override  

    protected void oncreate(bundle savedinstancestate) {  

        super.oncreate(savedinstancestate);  

        setcontentview(r.layout.activity_login);  

        findview();  

    }  

    /** 

     * 查找控件 

     */  

    public void findview() {  

        et_password = (edittext) findviewbyid(r.id.editpass);  

        et_username = (edittext) findviewbyid(r.id.editusername);  

        tv_result = (textview) findviewbyid(r.id.tv_result);  

     * 登陸按鈕操作 

     *  

     * @param v 

    public void login(view v) {  

        // 擷取點選控件的id  

        int id = v.getid();  

        // 根據id進行判斷  

        switch (id) {  

        case r.id.btn_login:// 進行登入操作  

            // 擷取使用者名密碼  

            final string username = et_username.gettext().tostring();  

            final string userpass = et_password.gettext().tostring();  

            // 判斷是否為空  

            if (textutils.isempty(username) || textutils.isempty(userpass)) {  

                toast.maketext(getapplicationcontext(), "使用者名或者密碼不能為空", 0)  

                        .show();  

            } else {  

                toast.maketext(getapplicationcontext(), "發送請求道伺服器", 0).show();  

                // loginbyasynchttpclientget(username, userpass);  

                loginasynchttpclientpost(username, userpass);  

            }  

            break;  

        default:  

        }  

     * 通過開源架構asynchttpclient的post請求處理 

     * @param username 

     * @param userpass 

    private void loginasynchttpclientpost(final string username,  

            final string userpass) {  

        // 發送請求到伺服器  

        asynchttpclient client = new asynchttpclient();  

        string url = "http://172.16.237.144:8080/login/loginservlet";  

        // 建立請求參數  

        requestparams params = new requestparams();  

        params.put("username", username);  

        params.put("userpass", userpass);  

        // 執行post方法  

        client.post(url, params, new asynchttpresponsehandler() {  

            @override  

            public void onsuccess(int statuscode, header[] headers,  

                    byte[] responsebody) {  

                // 設定值  

                tv_result.settext(new string(responsebody));  

            public void onfailure(int statuscode, header[] headers,  

                    byte[] responsebody, throwable error) {  

                // 列印錯誤資訊  

                error.printstacktrace();  

        });  

     * 通過開源架構asynchttpclient的get請求處理 

    private void loginbyasynchttpclientget(final string username,  

        // 建立異步請求端對象  

        string url = "http://172.16.237.144:8080/login/loginservlet?username="  

                + username + "&userpass=" + userpass;  

        // 發送get請求對象  

        client.get(url, new asynchttpresponsehandler() {  

            // statuscode:狀态傳回碼,headers:頭部請求資訊,responsebody傳回結果  

                // 輸出錯誤資訊  

}  

為了加強我們了解,在onsuccess方法中加入一些測試語句:

引用開源架構通過AsyncHttpClient處理get/post請求

在控制台輸出結果如下:

引用開源架構通過AsyncHttpClient處理get/post請求

 jar檔案資源:http://download.csdn.net/detail/zhaoyazhi2129/7400787

源碼:http://download.csdn.net/detail/zhaoyazhi2129/7400799

繼續閱讀