首先我们在项目中导入这个框架:

implementation 'com.mcxiaoke.volley:library:1.0.19'

在AndroidManifest文件当中添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

下面是我们的首页布局:
在这个布局当中我们将Volley框架的所有功能都做成了一个按钮,按下按钮之后就会在“显示结果”下面显示结果,显示结果下面使用了一个ScrollView,并在ScrollView下面嵌套了一个Textview和Imageview,用于把我们加载成功之后的图片和文字进行显示。

下面是首页布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity">
<Buttonandroid:id="@+id/get"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Get请求"/><Buttonandroid:id="@+id/post"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Post请求"/><Buttonandroid:id="@+id/json"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="请求JSON"/><Buttonandroid:id="@+id/ImageRquest"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="ImageRquest加载图片"/><Buttonandroid:id="@+id/ImageLoader"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="ImageLoader加载图片"/><Buttonandroid:id="@+id/NetWorkImageView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="NetWorkImageView加载图片"/><TextViewandroid:text="显示结果"android:textSize="20sp"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:visibility="gone"android:id="@+id/iv_volley"android:layout_width="wrap_content"android:layout_height="wrap_content" /><com.android.volley.toolbox.NetworkImageViewandroid:id="@+id/NetWork"android:visibility="gone"android:layout_width="200dp"android:layout_height="200dp" /><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_volley_result"android:layout_width="match_parent"android:layout_height="match_parent" /></ScrollView>
</LinearLayout>

为了实现POST请求,进行POST请求一共需要三步,分别是:

  1. 创建一个请求队列
  2. 创建一个请求
  3. 将创建的请求添加到请求队列当中

在创建请求的时候,必须同时写两个监听器,一个是实现请求,正确接受数据的回调,另一个是发生异常之后的回调。这里我们准备了json数据,是在gank.io的官网上找的,大家可以自行百度一下,这里就直接采用了网址:

http://api.m.mtime.cn/PageSubArea/TrailerList.api

当中的json数据进行POST请求了,只要我们在文本显示区返回的数据和这个网站上面的数据显示相同,则请求成功。如果不同也会显示出错误的原因。

实现的核心代码如下:

 post.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 1 创建一个请求队列RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);// 2 创建一个post请求String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {@Overridepublic void onResponse(String s) {tv_volley_result.setText(s);}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError volleyError) {tv_volley_result.setText("请求失败" + volleyError);}}) {@Overrideprotected Map<String, String> getParams() throws AuthFailureError {Map<String, String> map = new HashMap<String, String>();
//                        map.put("value1","param1");return map;}};// 3 将post请求添加到队列中
                requestQueue.add(stringRequest);}});

全部主活动的Java代码如下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
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.JsonObjectRequest;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;import org.json.JSONObject;import java.util.HashMap;
import java.util.Map;public class MainActivity extends AppCompatActivity {private Button get;private Button post;private Button json;private Button imagerequest;private  Button imageload;private  Button netWorkImageView;private ImageView iv;private NetworkImageView network;private TextView tv_volley_result;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initview();initListener();}public void initview()//把需要初始化的控件的逻辑都写在这里是一个很好的编程范式
    {get=findViewById(R.id.get);post=findViewById(R.id.post);json=findViewById(R.id.json);imagerequest=findViewById(R.id.ImageRquest);imageload=findViewById(R.id.ImageLoader);netWorkImageView=findViewById(R.id.NetWorkImageView);iv=findViewById(R.id.iv_volley);network=findViewById(R.id.NetWork);tv_volley_result=findViewById(R.id.tv_volley_result);}public void initListener(){get.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//创建一个请求队列RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this);//创建一个请求String url="http://gank.io/api/xiandu/category/wow";StringRequest stringRequest=new StringRequest(url, new Response.Listener<String>() {//正确接受数据之后的回调
                    @Overridepublic void onResponse(String response) {tv_volley_result.setText(response);}}, new Response.ErrorListener() {//发生异常之后的监听回调
                    @Overridepublic void onErrorResponse(VolleyError error) {tv_volley_result.setText("加载错误"+error);}});//将创建的请求添加到请求队列当中
                requestQueue.add(stringRequest);}});post.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 1 创建一个请求队列RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);// 2 创建一个post请求String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {@Overridepublic void onResponse(String s) {tv_volley_result.setText(s);}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError volleyError) {tv_volley_result.setText("请求失败" + volleyError);}}) {@Overrideprotected Map<String, String> getParams() throws AuthFailureError {Map<String, String> map = new HashMap<String, String>();
//                        map.put("value1","param1");return map;}};// 3 将post请求添加到队列中
                requestQueue.add(stringRequest);}});json.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {
// 1 创建一个请求队列RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);// 2 创建一个请求String url = "http://gank.io/api/xiandu/category/wow";JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {@Overridepublic void onResponse(JSONObject jsonObject) {tv_volley_result.setText(jsonObject.toString());}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError volleyError) {tv_volley_result.setText("请求失败" + volleyError);}});// 3 将创建的请求添加到请求队列中
                requestQueue.add(jsonObjectRequest);}});imagerequest.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {}});imageload.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {}});netWorkImageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {}});}
}


转载于:https://www.cnblogs.com/geeksongs/p/10873092.html

Android框架Volley使用:Post请求实现相关推荐

  1. Android之解剖网络请求框架Volley

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! Volley介绍 Volley是Google推出的网络请求库,包含的特性有JSON ...

  2. Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)

    Volley框架: 特点: 通信更快,更简单 Get,Post网络请求及网络图像的高效率异步处理请求. 当多个请求时,对网络请求进行排序,按优先级处理 当网络状况不好时,Volley可以自动对上次请求 ...

  3. Android新的网络请求框架volley源码解释及示例

    最近遇到一个问题:我想用HttpClient来访问网络,发现怎么都无法new出HttpClient的对象,这我就有点摸不着头脑了.记得我之前都是可以使用这个类的,怎么突然间就用不了了.因为不知情,一下 ...

  4. Android 网络通信框架Volley简介(Google IO 2013)

    Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v= ...

  5. Android框架之网络开发框架Volley

    1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android 系统中主要提供了两种方式来进行 ...

  6. ym—— Android网络框架Volley(终极篇)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看 Android网络框架Volley(体验篇) ...

  7. Android网络框架Volley项目实战-刘桂林-专题视频课程

    Android网络框架Volley项目实战-5257人已学习 课程介绍         使用Google 2013 I/O大会上发布的Volley请求框架做几个实战项目,归属地查询,QQ测试吉凶,天气 ...

  8. Android网络框架volley学习(一)基本用法

    记录学习Android网络基础框架volley的过程. 首先我们需要将volley下载下来导入Android Studio中,我学习一个开源库,最好的方式就是将其源码以module的方式依赖到工程中去 ...

  9. android中volley通信框架简介

    1. 什么是Volley? 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient ...

最新文章

  1. python request file upload_Python基于requests实现模拟上传文件
  2. React学习实例总结,包含yeoman安装、webpack构建
  3. IIS部署asp.net core webapi
  4. Shell-06 函数
  5. 1 MM配置-企业结构-定义-定义评估级别
  6. 分割字符串s使得每个子串都是回文串
  7. 组织文化运营_组织可以从开放文化和技术中学到什么
  8. 1w用户的并发量多大_QQ邮件订阅中心下线:卢松松博客曾经有1W多订阅用户
  9. redhat修改mysql编码格式_RedHatLinux下修改MySQL编码方式
  10. android 深色主题背景适配原理剖析
  11. 特征和多项式回归--machine learning
  12. mysql localhost值_jdbc:mysql://localhost:3306/mysql这句话中localhost具体指什么的localhost?能修改么?在哪里配置的?...
  13. 零基础入门进化算法(基本概念)
  14. C语言刷题随记 —— 国际象棋棋盘
  15. 把中文目录名称修改成英文首字母大写或中文拼音目录
  16. 远程桌面无法连接 计算机死机,远程桌面被远程的机器就死机解决方案
  17. 有一条长阶梯:如果每步跨 2阶,那么最后剩 1 阶;如果每步跨 3 阶,那么最后剩 2 阶;如果每步跨 5 阶,那么最后剩 4 阶;如果每步跨 6 阶,那么最后剩 5 阶;只有当每步跨 7 阶时,最后
  18. Linux 超级终端 不显示,超级终端怎么设置,超级终端密码不显示
  19. VLOOKUP函数制作多表查询(学生信息表/员工工资表)
  20. 8051/2单片机基础 实现开关,驱动2位的共阳极数码管显示小数,驱动喇叭播放音乐

热门文章

  1. 文件和目录:access函数
  2. emacs haskell mode 在windows 下的配置
  3. 浅谈.net事件机制
  4. 一个项目了解 SpringBoot 集成 MyBatis
  5. notepad++设置自动刷新文本(中文版/英文版)
  6. SqlServer死锁com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 52) was deadlock
  7. win10安装rqalpha开源回测框架
  8. 想要轻松入门数据分析,这些知识不得不看!
  9. Flex 开发android程序键盘遮挡输入框解决方案
  10. php mysql 源码 安装教程_源码安装和配置apache(httpd)和 PHP 和 mysql全过程(一)...