Android-Volley框架中的get和post方式
阿新 • • 發佈:2019-01-23
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;
}
}