1. 程式人生 > >Android-Volley框架中的get和post方式

Android-Volley框架中的get和post方式

2013年Google在 I/O大會上釋出了Volley框架,它是Android平臺上的開源網路通訊庫,封裝了Http網路請求,非同步任務,快取,圖片下載等功能。特點是能使網路通訊更簡單,更快速,更穩定。尤其適合處理資料量不大,但是網路通訊頻繁的場景。
使用StringRequest進行網路請求的實現過程如下:

  • 建立RequestQueue請求佇列
RequestQueue requestQueue = Volley.newRequestQueue(this);
  • 建立StringRequest物件,建構函式說明如下
StringRequest(int method,     //請求方式, 0:
GET, 1:POST預設為Get String url, //請求網址 Response.Listener listener, //響應成功監聽介面(相當於onPostExecute) Response.ErrorListener errorListener)//響應錯誤監聽介面

或者

StringRequest(String url,
    Response.Listener listener, 
    Response.ErrorListener errorListener)
  • 將StringRequest物件新增到請求佇列中
requestQueue.add(StringRequest);

主函式程式碼

public class VolleyStringRequestActivity extends AppCompatActivity {
    private RequestQueue queue;
    private Button bt1,bt2;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_volley_string_request);
        tv= (TextView) findViewById(R.id.tv1);
        bt1= (Button) findViewById(R.id.bt1);
        bt2= (Button) findViewById(R.id.bt2);
        queue= Volley.newRequestQueue(this
); bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url= UrlManager.BASE_URL+UrlManager.GSON_URL; stringRequestGet(url); } }); bt2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url=UrlManager.BASE_URL+UrlManager.MAIN_VIEW; stringRequestPost(url); } }); } public void stringRequestGet(String url){ StringRequest sr=new StringRequest(url, new Response.Listener<String>() { //響應成功監聽介面 @Override public void onResponse(String s) { //解析JSON資料 // Toast.makeText(VolleyStringRequestActivity.this, ""+s, Toast.LENGTH_SHORT).show(); Log.d("====",s); //Log無用? tv.setText(s); } }, new Response.ErrorListener() { //響應錯誤監聽介面 @Override public void onErrorResponse(VolleyError volleyError) { //提示網路異常 } }); queue.add(sr); } public void stringRequestPost(String url){ StringPostRequest spr=new StringPostRequest(url, new Response.Listener<String>() { @Override public void onResponse(String s) { tv.setText(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); spr.putValue("option","getUser"); spr.putValue("uName","jerehedu"); queue.add(spr); } }

Volley中的post方式需要先重寫StringRequest類

public class StringPostRequest extends StringRequest{
    private Map map;
    public StringPostRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        super(Method.POST,url, listener, errorListener);
        map=new HashMap();
    }

    public void putValue(String key,String value){
        map.put(key,value);
    }

    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return map;
    }
}