标签:volley stringrequ jsonreques 字符串 json
大概知道了volley是什么了,第二章我们就来看下volley,自己默认有哪些功能。
1.StringRequest
package com.example.VolleyDemo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import static com.android.volley.Response.*;
public class StringActivity extends Activity {
private TextView mStringResult;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_string);
mStringResult = (TextView) findViewById(R.id.StringTxt);
}
RequestQueue mQueue;
@Override
protected void onStart() {
super.onStart();
/********************4步骤********************/
//1.创建一个RequestQueue对象
mQueue = Volley.newRequestQueue(this);
//2.启动RequestQueue
mQueue.start();//请求队列开始进行调度
//3.创建一个StringRequest
StringRequest stringRequest = new StringRequest("http://www.baidu.com",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG", response);
mStringResult.setText(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
Toast.makeText(StringActivity.this, "网络错误", Toast.LENGTH_SHORT).show();
}
});
//4.将StringRequest对象添加到RequestQueue里面
stringRequest.setTag("StringActivity");
mQueue.add(stringRequest);
/******************************************/
}
@Override
protected void onDestroy() {
super.onDestroy();
if(mQueue!=null){
mQueue.cancelAll("StringActivity");
}
}
}
RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。
RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。
Volley的比较核心的一个类就是RequestQueue,一个请求队列。它负责管理工作线程,读写缓存,和解析、分发响应(具体操作还是由具体的类实现),即将发出的Http请求都会首先聚集在这里等待工作线程来实现请求。RequestQueue可以被看成一艘载满Http请求的航空母舰,而工作线程就是弹射器喽。
1.获取RequestQueue(得到一艘航母,可以是自己造的,也可以是委托别人造的,下面会提到)
2.实例化一个Request(得到一架飞机,你也知道飞机又很多类型啦)
3.将Request加入RequestQueue,等待工作线程将其发送出去(把飞机从机库升上起飞甲板,等待弹射器把它扔出去)
起飞侦察机-发出GET请求
但是但是StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了.
2.JsonRequest
package com.example.VolleyDemo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import static com.android.volley.Response.*;
public class JsonActivity extends Activity {
private TextView mJsonResult;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_json);
mJsonResult = (TextView) findViewById(R.id.JsonTxt);
}
RequestQueue mQueue;
@Override
protected void onStart() {
super.onStart();
/*******************4步骤***********************/
//1.创建一个RequestQueue对象
mQueue = Volley.newRequestQueue(this);
//2.启动RequestQueue
mQueue.start();
//3.创建一个JsonObjectRequest
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json", null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
try {
mJsonResult.setText(response.getString("count"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
Toast.makeText(JsonActivity.this, "网络错误", Toast.LENGTH_SHORT).show();
}
});
//4.将JsonObjectRequest对象添加到RequestQueue里面
mQueue.add(jsonObjectRequest);
/******************************************/
}
@Override
protected void onDestroy() {
super.onDestroy();
if(mQueue!=null){
mQueue.cancelAll(this);
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
Android 谷歌 开源 通信框架 VOLLEY(二)——String/Json处理
标签:volley stringrequ jsonreques 字符串 json
原文地址:http://blog.csdn.net/wtyvhreal/article/details/47293607