您的位置:首页 > 理论基础 > 计算机网络

Android Studio中使用开源库volley进行网络访问简单示例

2016-05-16 22:31 519 查看

volley特性 :

   1>使用volley开源库进行网络访问,使网络访问更简单,快速,健壮

   2>可以将网络访问与activity生命周期相关联

1.环境

    AndroidStudio 2.1正式版

   volley.jar

   关于将volley.jar导入androidStudio网上有很多教程,很简单,此处省略

2.开始使用volley库进行网络访问

    1> 创建一个访问队列

   

<span style="font-size:18px;">package com.example.zhaoyun.usingvolley;

import android.app.Application;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

//创建一个请求队列

public class Myapplication extends Application {

@Override
public void onCreate() {
super.onCreate();

//初始化一个请求队列
queue = Volley.newRequestQueue(this);
}

//外部可以通过这个方法获取请求队列
public static RequestQueue getHttpQueue(){
return queue;
}

public static RequestQueue queue;
}</span>

    2>创建一个GET,POST请求并添加到队列里进行网络请求,并在activity退出时停止网络访问

  

package com.example.zhaoyun.usingvolley;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnRequest = (Button) findViewById(R.id.btnRequest);
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
volley_Post();
}
});
}

//创建一个Get请求
private void volley_Get(){

//Get方式访问时须将请求参数写在url里
String url = "http://10.150.249.211:8080/TestServer/api.jsp?action=login&machine_id=1&";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {//请求成功回调

Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();

}
}, new Response.ErrorListener() {//请求失败回调
@Override
public void onErrorResponse(VolleyError volleyError) {

Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_SHORT).show();

}
});

//设置请求标签
request.setTag("abcGet");
//将请求添加到队列
Myapplication.getHttpQueue().add(request);
}

//创建一个Post请求
private void volley_Post(){
String url = "http://10.150.249.211:8080/TestServer/api.jsp";
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {//请求成功回调

Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {//请求失败回调

Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_SHORT).show();

}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {//创建请求参数

HashMap<String,String> map = new HashMap<String, String>();
map.put("action","login");
map.put("machine_id","1");

return map;
}
};

request.setTag("abcPost");
Myapplication.getHttpQueue().add(request);
}

//volley特性二:可以与activity生命周期相关联
@Override
protected void onStop() {
super.onStop();

//通过前面设置的Tag,取消创建的volley_Get请求
Myapplication.getHttpQueue().cancelAll("abcGet");
//通过前面设置的Tag,取消创建的volley_Post请求
Myapplication.getHttpQueue().cancelAll("abcPost");
}

private Button btnRequest;
}


    3>测试:本示例使用一个Button点击进行网络访问来进行测试,示例中的url是我在另一个Demo里写的本地测试服务器的url,结果用Toast展示

         


  

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息