Android Volley 发送请求Demo

Volley
  • Google 是Google 2013年的I/O大会上,发布的一个框架
  • 是Android上的网络通信库。能使网络通信更快,更简单,更健壮
  • 特别适合数据量不大,但是通信频繁的场景(带图片的列表)


相关API
  • RequestQueue:请求队列,会自动执行队列中的请求
    • Volley.newRequestQueue(context):创建一个请求队列
    • addRequest(Request request):将请求添加到请求队列
  • Request<T>:代表请求的接口
    • StringRequest:获取字符串结果的请求
    • JsonRequest:获取Json数据结果的请求
    • ImageRequest:获取图片结果的请求
package com.jereh.learnbymyself.net;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
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 com.jereh.learnbymyself.R;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class NetActivity extends AppCompatActivity {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_net);
        textView = (TextView) findViewById(R.id.txt);
        queue = Volley.newRequestQueue(this);
        textView.setMovementMethod(new ScrollingMovementMethod());
    }

    public void connGet(View view) {
        final ProgressDialog dialog = ProgressDialog.show(this, null, "正在请求中");
        new Thread() {
            @Override
            public void run() {
                String path = "http://192.168.155.1:8080/AndroidHttp?name=haoren";
//                String path = "http://www.baidu.com";
                try {
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    connection.connect();
                    int responseCode = connection.getResponseCode();
                    if (responseCode == 200) {
                        InputStream is = connection.getInputStream();
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        byte[] buffer = new byte[1024];
                        int len = -1;
                        while ((len = is.read(buffer)) != -1) {
                            baos.write(buffer, 0, len);
                        }
                        final String result = baos.toString();
                        baos.close();
                        is.close();
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                textView.setText(result);
                                dialog.dismiss();
                            }
                        });
                    }
                    //断开连接
                    connection.disconnect();
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
    /**
     * 1.创建请求队列
     * 2.创建请求对象StringRequest
     *
     * @param view
     */
    private RequestQueue queue;

    public void volleyGet(View view) {

        String path = "http://192.168.155.1:8080/AndroidHttp?name=haoren";
        StringRequest request = new StringRequest(Request.Method.GET, path, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                textView.setText(s);

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

                textView.setText(volleyError.toString());
            }
        });
        queue.add(request);
    }

    public void volleyPost(View view) {
        String path = "http://192.168.155.1:8080/AndroidHttp";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, path, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                textView.setText(s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e("haoren", "+++" + volleyError + "+++");
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map = new HashMap<String, String>();
                map.put("name", "haoren");
                return map;
            }
        };
        queue.add(stringRequest);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值