1. 程式人生 > >使用AsyncHttpClient框架來完成網路資料的請求

使用AsyncHttpClient框架來完成網路資料的請求

好幾天沒有到自己的部落格裡寫點文章了,今天在做專案之餘花點時間來寫一篇文章。由於本人在一個基於Android的購物平臺,目前pc端基本功能都已經寫好,Android的基本UI介面都已經OK,pc端介面也已有序的完成,現在只有Android客戶端通過HTPP請求獲取pc端資料沒有寫了,週末之餘花點時間來寫寫。要進行網路請求就想到找找比較優秀的網路請求框架使用來提高自己的技術,也許這個可能和大多數人一樣不斷的追尋新的東西才能有所成長,我也不例外,也時常的追尋一些新的東西融入到專案中去。找了找看到網路上有很多這樣的框架有功能比較全面的框架如:Xutils框架,afinal框架,ThinkAndroid等,也有針對網路請求的volley和AsyncHttpClient框架。

   本文中主要使用AsyncHttpClient框架來寫。我要說的是AsyncHttpClient框架確實挺不錯的,看著這樣的程式碼就很舒服,使用也很方便。

1.首先我們需要去下載AsyncHttpClient框架:

如果不知道在哪裡下載請猛戳這裡:Android開發AsyncHttpClient框架 這個是下載網址這裡有很好的demo可以供我們學習之用。

2.安裝和基本的使用

(首先我要備註和宣告下 我用的開發工具是 AndroidStudio  version:0.8.8)

Add maven dependency using Gradle buildscript in format

dependencies {
  compile 'com.loopj.android:android-async-http:1.4.5'
}

Import the http package.

import com.loopj.android.http.*;

Create a new AsyncHttpClient instance and make a request:

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler
() { @Override public void onStart() { // called before request is started } @Override public void onSuccess(int statusCode, Header[] headers, byte[] response) { // called when response HTTP status is "200 OK" } @Override public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { // called when response HTTP status is "4XX" (eg. 401, 403, 404) } @Override public void onRetry(int retryNo) { // called when request is retried } });

In this example, we’ll make a http client class with static accessors to make it easy to communicate with Twitter’s API.

import com.loopj.android.http.*;

public class TwitterRestClient {
  private static final String BASE_URL = "http://api.twitter.com/1/";

  private static AsyncHttpClient client = new AsyncHttpClient();

  public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.get(getAbsoluteUrl(url), params, responseHandler);
  }

  public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.post(getAbsoluteUrl(url), params, responseHandler);
  }

  private static String getAbsoluteUrl(String relativeUrl) {
      return BASE_URL + relativeUrl;
  }
}

This then makes it very easy to work with the Twitter API in your code:

import org.json.*;
import com.loopj.android.http.*;

class TwitterRestClientUsage {
    public void getPublicTimeline() throws JSONException {
        TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                // If the response is JSONObject instead of expected JSONArray
            }
            
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
                // Pull out the first event on the public timeline
                JSONObject firstEvent = timeline.get(0);
                String tweetText = firstEvent.getString("text");

                // Do something with the response
                System.out.println(tweetText);
            }
        });
    }
}

This library also includes a PersistentCookieStore which is an implementation of the Apache HttpClient CookieStore interface that automatically saves cookies to SharedPreferences storage on the Android device.

This is extremely useful if you want to use cookies to manage authentication sessions, since the user will remain logged in even after closing and re-opening your app.

First, create an instance of AsyncHttpClient:

AsyncHttpClient myClient = new AsyncHttpClient();

Now set this client’s cookie store to be a new instance of PersistentCookieStore, constructed with an activity or application context (usually this will suffice):

PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
myClient.setCookieStore(myCookieStore);

Any cookies received from servers will now be stored in the persistent cookie store.

To add your own cookies to the store, simply construct a new cookie and call addCookie:

BasicClientCookie newCookie = new BasicClientCookie("cookiesare", "awesome");
newCookie.setVersion(1);
newCookie.setDomain("mydomain.com");
newCookie.setPath("/");
myCookieStore.addCookie(newCookie);

Adding GET/POST Parameters with RequestParams

The RequestParams class is used to add optional GET or POST parameters to your requests.RequestParams can be built and constructed in various ways:

Create empty RequestParams and immediately add some parameters:

RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");

Create RequestParams for a single parameter:

RequestParams params = new RequestParams("single", "value");

Create RequestParams from an existing Map of key/value strings:

HashMap<String, String> paramMap = new HashMap<String, String>();
paramMap.put("key", "value");
RequestParams params = new RequestParams(paramMap);

Uploading Files with RequestParams

The RequestParams class additionally supports multipart file uploads as follows:

Add an InputStream to the RequestParams to upload:

InputStream myInputStream = blah;
RequestParams params = new RequestParams();
params.put("secret_passwords", myInputStream, "passwords.txt"
            
           

相關推薦

使用AsyncHttpClient框架完成網路資料請求

好幾天沒有到自己的部落格裡寫點文章了,今天在做專案之餘花點時間來寫一篇文章。由於本人在一個基於Android的購物平臺,目前pc端基本功能都已經寫好,Android的基本UI介面都已經OK,pc端介面也已有序的完成,現在只有Android客戶端通過HTPP請求獲取pc端資

Android okhttp3進行網路資料請求和傳送

在開發過程中我們很多地方都要和伺服器進行互動以及請求資料,本篇部落格簡單的介紹下okhttp3。 1.get請求 2.post請求 3.上傳檔案 4.下載檔案 ok,下面我們就要準備下如何封裝使用okhttp3。 在Android studio中我們可以在app---

AFNetworking框架IOS網路資料請求由淺入深的使用方法

一. 概述 我們今天是來深入研究一下這個與我們日常開發密切相關的框架是如何實現的。 這是我對 AFNetworking 整個架構的理解,隨後一系列的文章也會逐步分析這些模組。 在這篇文章中,我們有兩個問題需要了解: 如何使用 NSURLSession 發出

如何用Struts2框架完成登錄操作

如何用Struts2框架來完成登錄操作1. 問題:為什麽使用struts2框架?Struts2框架它是一個在web中應用的mvc框架。我們使用strtus2框架來完成web開發有什麽優勢?2. 問題:怎樣使用strtuts2框架首先要上網下載它的jar包。步驟:1.導入相關的jar文件2.需要在web.xml

RecyclerView+OKHttp+MVP網路資料請求,刪除條目

//首先新增依賴 //Recyclerview是listview的升級版 implementation 'com.android.support:recyclerview-v7:28.0.0' //okhttp implementation 'com.square

通用JS工具類封裝——網路資料請求功能、獲取服務端介面 url、引數功能

程式碼片段 'use strict'; var conf = { serverHost = '' }; var _mm = { //網路請求功能 request : function(param){ var _this = this;

使用SSH框架完成CRM系統流程總結

   今天是國慶節的第四天,也是中間一天。沒有捨得出去玩,因為我覺得像這樣的大塊時間來的不容易,不用去上課,沒有人干擾,用來學習自己喜歡的東西挺幸福的。我用將近一個星期的時間學習別人的CRM系統。自己也是剛學完SSH框架,用SSH框架來實現CRM系統。過程中犯下過許多錯誤。我

Swift 網路資料請求與處理最常用第三方

一: Swift 網路資料請求與處理最常用第三方      又有時間出來裝天才了,還是在學swift,從中又發現一些問題,這兩天上網找部落格看問題弄的真的心都累。部落格一篇寫出來,好多就直接照抄,就沒有實質性的把問題解決了,只是在發表的部落格數量上 +

iOS網路資料請求

HTTP和HTTPS協議 URL全稱是Uniform ResourceLocator(統一字典定位符)通過一個URL,能夠找到網際網路上唯一的11個資源 URL就是資源的地址,位置,網際網路上的每個資源都有一個唯一URL 協議:不同的協議代表著不同國的資源

Jpcap包的學習筆記(五)如何使用JpcapCaptor例項捕捉網路資料包(上部)

 如何使用JpcapCaptor例項來捕捉網路資料包        當你通過開啟網絡卡裝置得到JpcapCaptor例項後,就可以利用它來捕捉網路資料包了。你可以利用以下兩種方法來捕捉網路資料包。第一

利用執行緒池實現Android客戶端的http網路資料請求工具類

該工具類值只實現了HTTP的get方法,參考get方法可輕鬆實現post、put、delete等方法,下面是get方法的實現 public class SimpleHttpClient { private static final String TAG = Sim

lua網路資料請求過程

1.ResponseController 註冊訊息 -- 定向抽卡 commandFuncMap[ CommandTypes.ClarityDrawState ] = function( comman

Volley網路框架之快取載入圖片、Post與get的資料請求

         前言:Volley作為主流網路框架之一,必然有它的優點。Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優點集於了一身, 它的常用在資料量不大,但網路通訊頻繁,而且有圖片快取

用AsyncTask實現非同步請求網路資料

public class HelperAsnc { public HelperAsnc(){} //get請求 public HelperAsnc get(String url){ doHttp(url,"GET",""); retu

ThinkPHP框架,按分類,計算商品價格區間,完成價格搜索

_id pricedata explode eid blog class light price think //取出分類下的篩選屬性 $cateId=I(‘get.cid‘); /********計算這個分類下商品的七個價格區間的範圍******/

用AFN請求網路資料時出錯:(Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameter)

iOS 開發中使用AFN請求網路資料時出錯:(Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:])。 原因是AFNetworking請求中含有中文,需要處理

資料載入(有網路請求網路資料網路時載入資料庫資料

//NetWork 進行網路判斷 import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class NetWork {

UrlConnection請求網路資料

1.Get請求 try { //1 定義 URL 地址 URL url = new URL(地址 + 傳過來的引數); //ctrl + h 檢視類的繼承結構 //ctrl + q 檢視方法資訊 //2 開啟連線 H

Rxjava+Retrofit 觀察者模式 請求網路資料簡單使用

首先引入依賴 implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation

HttpURLConnection 請求網路資料 簡單使用(成功方法)

import android.os.Handler; import android.os.Message; import com.google.common.io.CharStreams; import java.io.InputStreamReader; import java.net.H