注意:要搭建好环境,运行

用volley方法时要把包导入project下的模块下的libs目录下

package com.example.chenshuai.myapplication;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; 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 java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map; public class MainActivity extends AppCompatActivity { EditText et_bt_3;
EditText et_bt_4; RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); et_bt_3 = (EditText)findViewById(R.id.et_bt_3);
et_bt_3.setText("http://192.168.1.104:8080/TestWeb/index.jsp"); et_bt_4 = (EditText)findViewById(R.id.et_bt_4); //获取Volley的请求队列
requestQueue = Volley.newRequestQueue(this);
}
public void getonclick(View view)
{
//1.
/*
* 使用httpUrlConnection提交get请求
*/
/*
1. 显示ProgressDialog
2. 启动分线程
3. 在分线程, 发送请求, 得到响应数据
1). 得到path, 并带上参数name=Tom1&age=11
2). 创建URL对象
3). 打开连接, 得到HttpURLConnection对象
4). 设置请求方式,连接超时, 读取数据超时
5). 连接服务器
6). 发请求, 得到响应数据
得到响应码, 必须是200才读取
得到InputStream, 并读取成String
7). 断开连接
4. 在主线程, 显示得到的结果, 移除dialog
*/
//1. 显示ProgressDialog
final ProgressDialog progressDialog = ProgressDialog.show(this,null,"正在请求中..."); //2. 访问网络 开启子线程 new Thread()
{
@Override
public void run() { try { //1.URl
URL url = new URL(et_bt_3.getText().toString()+"?name=tom"); //2.获取连接
HttpURLConnection huc = (HttpURLConnection)url.openConnection(); //3.请求方式
huc.setRequestMethod("GET");
//设置超时
huc.setConnectTimeout(3000);
huc.setReadTimeout(3000); //连接并发送请求
huc.connect(); //接收
//判断返回状态 200
int code = huc.getResponseCode(); if (code == 200)
{
//接收数据 //输入流
InputStream is = huc.getInputStream();
//读取流
//1- byte数组
byte[] b = new byte[1024];
//2- 读到数组的长度
int i=0;
//3.接收到的数据
final StringBuilder sbl = new StringBuilder(); //边读边写
while((i=is.read(b))>0)
{
sbl.append(new String(b,0,i));
}
//释放资源
is.close();
huc.disconnect(); //通过主线程显示信息和关闭对话框
runOnUiThread(new Runnable() {
@Override
public void run() {
et_bt_4.setText(sbl); //关闭对话框
progressDialog.dismiss();
}
}); }
else
{
Toast.makeText(MainActivity.this, "连接错误,返回的状态码= " + code, Toast.LENGTH_SHORT).show();
} } catch (Exception e) {
e.printStackTrace();
progressDialog.dismiss();
} super.run();
}
}.start(); } public void postonclick(View view)
{ //1. 显示ProgressDialog 进度对话框
final ProgressDialog dialog = ProgressDialog.show(this, null, "正在加载中,请稍后...");
//2.开启子线程 访问网络
new Thread()
{
public void run()
{
try
{
//1) -URL
URL url = new URL(et_bt_3.getText().toString());
//2) -URL获取连接
HttpURLConnection huc =(HttpURLConnection)url.openConnection(); //请求方式
huc.setRequestMethod("POST");
//设置超时
huc.setConnectTimeout(3000);
huc.setReadTimeout(3000); //连接并发送请求
huc.connect(); //用输出流设置请求体
OutputStream os = huc.getOutputStream(); String str = "name=rose";
os.write(str.getBytes("UTF-8")); //接收:
//判断返回状态码 200
int code = huc.getResponseCode(); if (code == 200)
{
//接收数据 //输入流:
InputStream is = huc.getInputStream(); //读取流
//1-byte数组
byte[] b = new byte[1024];
//2-读到的长度
int i = 0;
//3-接收到的数据
final StringBuilder sbl = new StringBuilder(); while ((i = is.read(b))>0)
{
sbl.append(new String(b,0,i));
}
//释放资源
is.close();
huc.disconnect(); //通过主线程显示信息和关闭对话框
runOnUiThread(new Runnable() {
@Override
public void run() {
et_bt_4.setText(sbl);
//关闭对话框
dialog.dismiss();
}
}); }
else {
Toast.makeText(MainActivity.this, "连接错误,返回状态码=" + code, Toast.LENGTH_SHORT).show();
} } catch (Exception e)
{
e.printStackTrace(); dialog.dismiss();
}
} }.start();
} public void volleygetonclick(View view)
{
//1.进度对话框
final ProgressDialog progressDialog = ProgressDialog.show(this,null,"正在加载,请稍后。。。"); //构造Volley的请求对象 参数:1-地址 2-正常处理监听 3-错误处理监听
StringRequest sr = new StringRequest(et_bt_3.getText().toString() + "?name=jack", new Response.Listener<String>() {
@Override
public void onResponse(String s) { et_bt_4.setText(s); progressDialog.dismiss(); }
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) { Toast.makeText(MainActivity.this, "访问异常", Toast.LENGTH_SHORT).show();
//出错也要关闭
progressDialog.dismiss(); }
}); //把请求对象放入队列
requestQueue.add(sr);
} public void volleypostonclick(View view)
{
//1.进度对话框
final ProgressDialog progressDialog = ProgressDialog.show(this,null,"正在加载,请稍后。。。"); //构造Volley的请求对象
StringRequest sr = new StringRequest(Request.Method.POST,et_bt_3.getText().toString(), new Response.Listener<String>() {
@Override
public void onResponse(String s) { et_bt_4.setText(s);
progressDialog.dismiss(); }
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) { Toast.makeText(MainActivity.this, "访问异常", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}){
//重写设置参数的方法
@Override
protected Map<String, String> getParams() throws AuthFailureError { Map<String,String> m = new HashMap<String,String>();
m.put("name","volley"); return m;
}
};
//把请求对象放入队列 requestQueue.add(sr); }
}

Android——远程存储器存储:JDK方式和Volley框架的get和post的更多相关文章

  1. Android批量图片载入经典系列——Volley框架实现多布局的新闻列表

    一.问题描写叙述 Volley是Google 2013年公布的实现Android平台上的网络通信库,主要提供网络通信和图片下载的解决方式,比方曾经从网上下载图片的步骤可能是这种流程: 在ListAda ...

  2. Android Volley 框架的使用(一)

    为什么要使用Volley框架 开发android应用很多时候都要涉及网络操作,Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应 ...

  3. Android网络通信Volley框架源代码浅析(一)

    尊重原创http://blog.csdn.net/yuanzeyao/article/details/25837897 从今天開始,我打算为大家呈现关于Volley框架的源代码分析的文章,Volley ...

  4. Android Volley框架的使用(1)

    在Android开发中,经常要通过HTTP请求访问网络.为了使通过HTTP请求访问网络的过程更加简单,2013年提出了新的HTTP通信框架--Volley.Volley使用起来非常简单,适用于网络访问 ...

  5. Android Volley框架的使用(三)

     此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git Image Request 为了更方便的使用Volley中的图片请求,我们同样先在Voll ...

  6. Android Volley框架的使用(二)

     此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到Reque ...

  7. Android网络通信Volley框架源代码浅析(三)

    尊重原创 http://write.blog.csdn.net/postedit/26002961 通过前面浅析(一)和浅析(二)的分析.相信大家对于Volley有了初步的认识,可是假设想更深入的理解 ...

  8. Android开发利用Volley框架下载和缓存网络图片

    2013年Google I/O大会上推出了一种新的网络通信框架——Volley,Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可 ...

  9. Android网络通信Volley框架源代码浅析(二)

    尊重原创 http://write.blog.csdn.net/postedit/25921795 在前面的一片文章Volley框架浅析(一)中我们知道在RequestQueue这个类中,有两个队列: ...

随机推荐

  1. vim的全局替换[zz]&把字符替换成回车

    本文出自   http://blog.csdn.net/shuangde800   本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记.   本文内容 ...

  2. 亿级Web系统搭建:单机到分布式集群【转】

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  3. 关于ansbile工具的shell、command、script、raw模块的区别和使用场景

    command模块 [执行远程命令] [root@node1 ansible]# ansible testservers -m command -a 'uname -n' script模块 [在远程主 ...

  4. XML5个转义符

    XML5个转义符:<,>,&,”,©;的转义字符分别如下: < >& " &apos;

  5. jsp页面中的EL表达式不被解析的问题

    原因:问题在web.xml配置文件上,web.xml声明部分一般分为如下版本的xsd, web-app_2_2.xsd web-app_2_3.xsd web-app_2_4.xsd web-app_ ...

  6. tensorflow省钱方案-ml-engine

    google cloud有专门的ml-engine(machine learning engine)模块,可以直接用来跑tensorflow,不用像虚拟机一样开关机.只需要根据需要指定配置就行.收费分 ...

  7. vivado 的调试工具ILA抓到的波形可以保存

    Vivado下debug后的波形通过图形化界面并不能保存抓取到波形,保存按钮只是保存波形配置,如果需要保存波形需要通过TCL命令来实现: write_hw_ila_data0730_ila_1 [up ...

  8. 认识和使用Task

    对于多线程,我们经常使用的是Thread.在我们了解Task之前,如果我们要使用多核的功能可能就会自己来开线程,然而这种线程模型在.net 4.0之后被一种称为基于“任务的编程模型”所冲击,因为tas ...

  9. Openfire更新服务器名称的方法

    转自:http://blog.csdn.net/vikione/article/details/5996932 Openfire更新服务器名称的方法: 1.登陆openfire管理页面,在主页面下方选 ...

  10. AlloyTouch全屏滚动插件搞定顺滑H5页

    使用姿势 在设计全屏滚动插件的时候,希望开发者几乎: 不用写任何脚本快速生成精致H5 支持PC滚轮和移动触摸 酷炫的转场动效 灵活的时间轴管理 一切皆可配置 但是不写脚本肯定没有灵活性咯?!不是的.这 ...