Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android詳解之NoHttp最基本使用(無封裝)

Android詳解之NoHttp最基本使用(無封裝)

編輯:關於Android編程

NoHttp是專門做Android網絡請求與下載的框架,NoHttp基本使用方法如下

本文demo源碼下載地址: http://xiazai.jb51.net/201609/yuanma/AndroidNoHttp(jb51.net).rar

本文的例子來自上面的demo中的OriginalActivity中。

代碼

對於新手, 看別人封裝好的代碼允許要稍微吃力一點,尤其是一個框架,所以我們先看NoHttp最原始的使用方法:

public class OriginalActivity extends BaseActivity implements View.OnClickListener {

 /**
  * 用來標志請求的what, 類似handler的what一樣,這裡用來區分請求
  */
 private static final int NOHTTP_WHAT_TEST = 0x001;

 /**
  * 請求的時候等待框
  */
 private WaitDialog mWaitDialog;

 /**
  * 請求隊列
  */
 private RequestQueue requestQueue;

 @Override
 protected void onActivityCreate(Bundle savedInstanceState) {
  setTitle(Application.getInstance().nohttpTitleList[0]);
  setContentView(R.layout.activity_original);
  // 按鈕點擊監聽
  findView(R.id.btn_start).setOnClickListener(this);

  mWaitDialog = new WaitDialog(this);

  // 創建請求隊列, 默認並發3個請求, 傳入數字改變並發數量: NoHttp.newRequestQueue(1);
  requestQueue = NoHttp.newRequestQueue();
 }

 @Override
 public void onClick(View v) {
  // 創建請求對象
  Request<String> request = NoHttp.createStringRequest(url, RequestMethod.POST);

  // 添加請求參數
  request.add("userName", "yolanda");
  request.add("userPass", 1);
  request.add("userAge", 1.25);

  // 上傳文件
  request.add("userHead", new FileBinary(new File(path)));

  // 添加請求頭
  request.addHeader("Author", "nohttp_sample");

  // 設置一個tag, 在請求完(失敗/成功)時原封不動返回; 多數情況下不需要
  // request.setTag(object);

  /*
   * what: 當多個請求同時使用同一個OnResponseListener時用來區分請求, 類似handler的what一樣
   * request: 請求對象
   * onResponseListener 回調對象,接受請求結果
   */
  requestQueue.add(NOHTTP_WHAT_TEST, request, onResponseListener);
 }

 /**
  * 回調對象,接受請求結果
  */
 private OnResponseListener<String> onResponseListener = new OnResponseListener<String>() {
  @SuppressWarnings("unused")
  @Override
  public void onSucceed(int what, Response<String> response) {
   if (what == NOHTTP_WHAT_TEST) {// 判斷what是否是剛才指定的請求
    // 請求成功
    String result = response.get();// 響應結果
    // 響應頭
    Headers headers = response.getHeaders();
    headers.getResponseCode();// 響應碼
    response.getNetworkMillis();// 請求花費的時間
   }
  }

  @Override
  public void onStart(int what) {
   // 請求開始,顯示dialog
   mWaitDialog.show();
  }

  @Override
  public void onFinish(int what) {
   // 請求結束,關閉dialog
   mWaitDialog.dismiss();
  }

  @Override
  public void onFailed(int what, String url, Object tag, CharSequence error, int resCode, long ms) {
   // 請求失敗
   ...
  }
 };

 @Override
 protected void onDestroy() {
  super.onDestroy();
  requestQueue.cancelAll();// 退出APP時停止所有請求
  requestQueue.stop();// 退出APP時停止隊列
 }

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved