AsyncTask POST请求
布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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"
tools:context="net.bwie.network.activity.PostActivity"> <Button
android:id="@+id/post_btn"
android:text="post请求"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/> </android.support.constraint.ConstraintLayout>
Activity:
/**
* 当前案例:
* 上传姓名和年龄,返回JSON字符串
*/
public class PostActivity extends AppCompatActivity implements View.OnClickListener { protected Button mPostBtn; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_post);
initView();
} @Override
public void onClick(View view) {
if (view.getId() == R.id.post_btn) {
doPost();
}
} // 使用异步任务执行POST请求
private void doPost() {
String url = "http://localhost:8080/postdemo"; PostTask task = new PostTask();
task.execute(url);
} private void initView() {
mPostBtn = (Button) findViewById(R.id.post_btn);
mPostBtn.setOnClickListener(PostActivity.this);
} private class PostTask extends AsyncTask<String, Void, Person> { @Override
protected Person doInBackground(String... params) {
String requestUrl = params[0]; URL url = null;
try {
url = new URL(requestUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置POST请求
connection.setRequestMethod("POST");
// 设置可向服务器输出
connection.setDoOutput(true);
// 打开连接
connection.connect(); // 打开连接后,向服务端写要提交的参数
// 参数格式:“name=asdasdas&age=123123”
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("name=")
.append("wuyanzu")// 拼接自己传入的姓名
.append("&")
.append("age=")
.append("123");// 拼接自己传入的年龄
// 获取向服务器写数据的输出流
connection.getOutputStream()
.write(stringBuilder.toString().getBytes()); // 提交数据后,获取来自服务器的json数据
if (connection.getResponseCode() == 200) {
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(connection.getInputStream())); String json = "";
String line = ""; while ((line = br.readLine()) != null) {
json += line.trim();
} // 解析
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
return person; } } catch (Exception e) {
e.printStackTrace();
} return null;
} @Override
protected void onPostExecute(Person person) {
super.onPostExecute(person); Log.d("1507", "name:" + person.getName() + ", age: " + person.getAge());
}
} }
Bean:
package net.bwie.network.bean;
public class Person {
private String name = "";
private String age = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
权限: <uses-permission android:name="android.permission.INTERNET"/>
AsyncTask POST请求的更多相关文章
- Android使用AsyncTask设置请求超时的注意事项
备注:该篇文章为原创,转载请声明地址,谢谢! /** * AsyncTaskTools2集成了AsyncTask类 * 前三个参数为回到函数,最后一个为全局的Context */ final Asyn ...
- AsyncTask GET请求
布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...
- Android性能优化典例(二)
1.使用 Maven 依赖方案代替使用导入jar包方案 如果项目中需要用到第三方jar包,常用的做法是去网上下载后然后放入libs文件夹,再添加到项目依赖,不过,在Android Studio已经不推 ...
- (转载) 清理缓存 IPackageStatsObserver
清理缓存 IPackageStatsObserver 2016-04-10 13:40 2288人阅读 评论(0) 收藏 举报 分类: android(59) 版权声明:本文为博主原创文章,未经博 ...
- Android Studio利用异步任务AsyncTask发送post请求获取json数据
syncTask,是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主 ...
- AsyncTask异步加载和HttpURLConnection网络请求数据
//获得网络数据 private void huodeshuju() { //这里是使用线程,已注释掉 /*new Thread(){ public void ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案
一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...
- Android笔记——AsyncTask介绍
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...
随机推荐
- Linux下ps -ef 和 ps aux的区别
Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux.这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格, ...
- Apater适配器模式(结构型模式)
1.概要 适配:即在不改变原有实现的基础上,将原先不适合的接口转换成适合的接口. what is Apater?适配,这个概念在生活中无处不在,比如你的iphone 4手机充电器坏了,这是时候只有一个 ...
- Shell 常用的命令
ls功能:列出目录内容常用选项:-a 显示所有文件,包括隐藏的-l 长格式列出信息-i 显示文件 inode 号-t 按修改时间排序-r 按修改时间倒序排序-h 打印易读大小单位 2 echo功能:打 ...
- Java8-用Lambda表达式给List集合排序
Lambda用到了JDK8自带的一个函数式接口Comparator<T>. 准备一个Apple类 public class Apple { private int weight; priv ...
- javascript中对条件判断语句的优化 分类: JavaScript 2015-06-07 09:54 832人阅读 评论(2) 收藏
不管写什么程序,平时都会用到条件语句,如:if...else... switch这样的语句,来达到对条件的判断.下面看来一段代码: function abc(test){ if (test == 1) ...
- 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}
最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...
- PLSQL Developer概念学习系列之如何正确登录连接上Oracle(图文详解)
不多说,直接上干货! 进入PLSQL Developer 1.双击 2.得到 比如,我这里安装的是 全网最详细的Windows系统里Oracle 11g R2 Database服务器端(64bit)的 ...
- SHELL脚本编程的常识和VI常用技巧
来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...
- 纯CSS3手风琴图片滑动特效
要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识. 开发环境 Adobe Dreamweaver CS6/Chrome浏览器 演示地址 演示地址 制作CSS3制作手风琴图片滑动效果,我们仅 ...
- 【转载】CentOS中crontab定时计划任务的使用
转载自:http://blog.csdn.net/testcs_dn/article/details/48780971 概述 利用“任务计划”,可以将任何脚本.程序或文档安排在某个最方便的时间运行.通 ...