数据储存——远程服务器存储——框架方式

一.Volley

1.特点

①轻量级的Android网络通信库

②适合数量不大但通信频繁的场景

2.API

1.RequestQueue

①请求队列

②Volley.newRequestQueue(context) 创建或得到请求队列    单例模式

③add(Request)添加请求到队列中

2.Request

①封装请求的基类

②子类

1)StringRequest  返回字符串的请求

构造方法:

new  StringRequest(get_path,正常响应监听,异常响应监听)   实现get方式

new  StringRequest(Request.Method.post,get_path,正常响应监听,异常响应监听){重写 Map<String, String> getParams()}   实现post方式

2)JsonRequest  返回Json的请求

3)ImageRequest  返回图片的请求

③Request.Method

1)GET  2)POST

二.加载方法

1.把jar包放到模块的libs目录下(切换到project视图模式)

2.在jar包上鼠标右键单机,选择“add as lib”,加入到开发环境

Volley-Get方式
Volley-Post方式
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.hanqi.testapp3.TestActivity3"
11     android:orientation="vertical">
12 
13     <LinearLayout
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content">
16         <Button
17             android:layout_width="0dp"
18             android:layout_height="wrap_content"
19             android:layout_weight="1"
20             android:text="JDK-Post方式"
21             android:onClick="bt2_OnClick"/>
22     <Button
23         android:layout_width="0dp"
24         android:layout_height="wrap_content"
25         android:layout_weight="1"
26         android:text="JDK-Get方式"
27         android:onClick="bt1_OnClick"/>
28     </LinearLayout>
29 
30     <LinearLayout
31         android:layout_width="match_parent"
32         android:layout_height="wrap_content">
33         <Button
34             android:layout_width="0dp"
35             android:layout_height="wrap_content"
36             android:layout_weight="1"
37             android:text="Volley-Get方式"
38             android:onClick="bt3_OnClick"/>
39         <Button
40             android:layout_width="0dp"
41             android:layout_height="wrap_content"
42             android:layout_weight="1"
43             android:text="Volley-Post方式"
44             android:onClick="bt4_OnClick"/>
45     </LinearLayout>
46     <EditText
47         android:layout_width="match_parent"
48         android:layout_height="200dp"
49         android:id="@+id/et_2"/>
50 
51 </LinearLayout>
.xml

 

  1 package com.hanqi.testapp3;
  2 
  3 import android.app.ProgressDialog;
  4 import android.os.Bundle;
  5 import android.support.v7.app.AppCompatActivity;
  6 import android.util.Log;
  7 import android.view.View;
  8 import android.widget.EditText;
  9 import android.widget.Toast;
 10 
 11 import com.android.volley.AuthFailureError;
 12 import com.android.volley.Request;
 13 import com.android.volley.RequestQueue;
 14 import com.android.volley.Response;
 15 import com.android.volley.VolleyError;
 16 import com.android.volley.toolbox.StringRequest;
 17 import com.android.volley.toolbox.Volley;
 18 
 19 import java.io.InputStream;
 20 import java.io.OutputStream;
 21 import java.net.HttpURLConnection;
 22 import java.net.URL;
 23 import java.util.HashMap;
 24 import java.util.Map;
 25 
 26 public class TestActivity3 extends AppCompatActivity {
 27 
 28 
 29     EditText et_2;
 30 
 31     //请求队列
 32     RequestQueue requestQueue;
 33 
 34     @Override
 35     protected void onCreate(Bundle savedInstanceState) {
 36         super.onCreate(savedInstanceState);
 37         setContentView(R.layout.activity_test3);
 38 
 39         et_2=(EditText)findViewById(R.id.et_2);
 40 
 41         //创建Volley的请求队列
 42         //在子线程
 43         requestQueue= Volley.newRequestQueue(this);
 44 
 45     }
 46  //Volley的Get
 47     public void bt3_OnClick(View v)
 48     {
 49         //1.启动进度对话框
 50         final ProgressDialog pd = ProgressDialog.show(this, null, "正在加载,请稍后...");
 51 
 52         //构建StringRequest
 53         StringRequest stringRequest = new StringRequest("http://192.168.0.128:81/index.asp?name=volley&password=456",
 54                 new Response.Listener<String>() {
 55                     @Override
 56                     public void onResponse(String s) {
 57                         //处理正常响应
 58                         //在主线程响应
 59                         et_2.setText(s);
 60 
 61                         pd.dismiss();
 62                     }
 63                 },
 64                 new Response.ErrorListener() {
 65                     @Override
 66                     public void onErrorResponse(VolleyError volleyError) {
 67 
 68                         //处理异常响应
 69                         volleyError.printStackTrace();
 70 
 71                         pd.dismiss();
 72                         Toast.makeText(TestActivity3.this, "响应异常 响应状态码" + volleyError.networkResponse.statusCode, Toast.LENGTH_SHORT).show();
 73 
 74                     }
 75                 });
 76         //加入队列
 77         requestQueue.add(stringRequest);
 78 
 79     }
 80 
 81 
 82 
 83     //Volley的Post
 84     public void bt4_OnClick(View v)
 85     {
 86         //1.启动进度对话框
 87         final ProgressDialog pd = ProgressDialog.show(this, null, "正在加载,请稍后...");
 88 
 89         //构建StringRequest
 90         StringRequest stringRequest = new StringRequest(Request.Method.POST,"http://192.168.0.128:81/index.asp",
 91                 new Response.Listener<String>() {
 92                     @Override
 93                     public void onResponse(String s) {
 94                         //处理正常响应
 95                         //在主线程响应
 96                         et_2.setText(s);
 97 
 98                         pd.dismiss();
 99                     }
100                 },
101                 new Response.ErrorListener() {
102                     @Override
103                     public void onErrorResponse(VolleyError volleyError) {
104 
105                         //处理异常响应
106                         volleyError.printStackTrace();
107 
108                         pd.dismiss();
109                         Toast.makeText(TestActivity3.this, "响应异常 响应状态码" + volleyError.networkResponse.statusCode, Toast.LENGTH_SHORT).show();
110 
111                     }
112                 }){
113 
114             //重写 得到参数的方法
115             @Override
116             protected Map<String, String> getParams() throws AuthFailureError {
117 
118                 Map<String,String> rtn =new HashMap<>();
119 
120                 rtn.put("name","postVolley");
121                 rtn.put("password","567");
122 
123                 return rtn;
124             }
125         };
126         //加入队列
127         requestQueue.add(stringRequest);
128 
129     }
130 }
.java

  

 

posted @ 2016-06-14 23:39  烟_雨_江_南  阅读(624)  评论(0编辑  收藏  举报