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

來源:互聯網
上載者:User

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時停止隊列 }}

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.