Android開發(41) 網絡訪問類庫Volley

什么是Volley

Google I/O 2013上,Volley發布了。Volley是Android平臺上的網絡通信庫,能使網絡通信更快,更簡單,更健壯。
這是Volley名稱的由來: a burst or emission of many things or a large amount at once

特點

支持JSON,圖片,二進制文本,內存和磁盤緩存,強力的自定義能力,debug和跟蹤工具

如何獲得?

我在 云盤 放了編譯好的 http://yunpan.cn/cg7S8awftBsmp 訪問密碼 b1bf

怎么用?

1.構建一個“請求隊列“RequestQueue
2.構建請求Request,支持 StringRequest,JsonRequest,并可以自定義Request
3.構建 回調監聽器 ,它將在請求處理完成后被調用。
4.將請求添加到隊列

演示代碼

HTTP GET 演示:

public class SimpleGetActivity extends Activity {
    RequestQueue mRequestQueue;
    TextView txt_msg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_get);
        txt_msg = (TextView) findViewById(R.id.txt_msg);
        
        mRequestQueue = Volley.newRequestQueue(this);
    }

    public void btn1OnClick(View v) {
        String url = "http://www.baidu.com";
        
        StringRequest req = new StringRequest(Method.GET, url, 
                responseListener, mErrorListener);
        
        mRequestQueue.add(req);
    }
    
    Listener<String> responseListener =new Listener<String>() {

        @Override
        public void onResponse(String str1) {
            txt_msg.setText(str1);
        }
    };
    
    ErrorListener mErrorListener = new ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError volleyError) {
            
            Toast.makeText(getBaseContext(), volleyError.getMessage(), 0).show();
        }
    };

}

HTTP POST方式發送參數

public class ParasPostActivity extends Activity {
    RequestQueue mRequestQueue;
    TextView txt_msg;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_paras_post);
    txt_msg = (TextView) findViewById(R.id.txt_msg);
    
    mRequestQueue = Volley.newRequestQueue(this);
}


public void btn1OnClick(View v) {
    String url = Constants.URL_FOR_DEMO1;
    
    StringRequest req = new StringRequest(Method.POST, url, 
            responseListener, mErrorListener){
        @Override
        protected Map<String, String> getParams()
                throws AuthFailureError {
            return new ApiParams().with("key1", "v1").with("key2", "v2");
        }
    };
    mRequestQueue.add(req);
}

Listener<String> responseListener =new Listener<String>() {

    @Override
    public void onResponse(String str1) {
        txt_msg.setText(str1);
    }
};

ErrorListener mErrorListener = new ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError volleyError) {
        
        Toast.makeText(getBaseContext(), volleyError.getMessage(), 0).show();
    }
};

}

注意傳參時,是通過匿名類實現的,重載了getParams 方法

參考:

http://blog.csdn.net/t12x3456/article/details/9221611
me.storm.volley 示例

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容