布局:

 <?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请求的更多相关文章

  1. Android使用AsyncTask设置请求超时的注意事项

    备注:该篇文章为原创,转载请声明地址,谢谢! /** * AsyncTaskTools2集成了AsyncTask类 * 前三个参数为回到函数,最后一个为全局的Context */ final Asyn ...

  2. AsyncTask GET请求

    布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  3. Android性能优化典例(二)

    1.使用 Maven 依赖方案代替使用导入jar包方案 如果项目中需要用到第三方jar包,常用的做法是去网上下载后然后放入libs文件夹,再添加到项目依赖,不过,在Android Studio已经不推 ...

  4. (转载) 清理缓存 IPackageStatsObserver

    清理缓存 IPackageStatsObserver 2016-04-10 13:40 2288人阅读 评论(0) 收藏 举报  分类: android(59)  版权声明:本文为博主原创文章,未经博 ...

  5. Android Studio利用异步任务AsyncTask发送post请求获取json数据

    syncTask,是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主 ...

  6. AsyncTask异步加载和HttpURLConnection网络请求数据

    //获得网络数据    private void huodeshuju() { //这里是使用线程,已注释掉        /*new Thread(){            public void ...

  7. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  8. Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案

    一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...

  9. Android笔记——AsyncTask介绍

    AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...

随机推荐

  1. odoo开发笔记 -- 前端开发相关

    https://www.cnblogs.com/lyzg/p/5634565.html http://dmyz.org/archives/598 https://www.jianshu.com/p/6 ...

  2. 解决 ORA-27102: out of memory

    记一次故障处理总结: 操作系统:windows server 2008 R2数据库版本:11.2.0.2 故障描述:外部应用连接数据库,提示连接不正常: 排错过程:1.首先 检查数据库监听服务状态是否 ...

  3. Tornado初探

    Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效 ...

  4. How To Scan QRCode For UWP (3)

    这一节主要介绍如何去设置MediaCapture拍照的分辨率. MediaCapture 包含一个 VideoDeviceController对象,凭借它可以控制摄像头的很多设置,其中包括设置拍照的分 ...

  5. crontab命令使用文档.txt

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...

  6. MySQL笔记(1)---MySQL体系结构和存储引擎

    1.前言 本系列记录MYSQL数据库的一些结构和实现特点,方便查询. 2.基本概念 数据库:物理操作系统文件或者其他形式文件类型的集合.MySQL中数据库文件可以是frm.MYD.MYI.ibd结尾的 ...

  7. css - bootstrap3下拉菜单点击之后怎么改变背景颜色?

    css添加 .navbar-default .navbar-nav>.open>a, .navbar-default .navbar-nav>.open>a:focus, .n ...

  8. GitLab 修改主机名,更换 IP 配置,配置 SMTP

    # find / -name gitlab.yml /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml /var/opt/gitla ...

  9. Mac OS X 下搭建thrift环境

    1.概述 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生产引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

  10. linux中为什么cpu使用率会超过100见解

    linux的cpu使用频率是根据cpu个数和核数决定的 top,然后你按一下键盘的1,这就是单个核心的负载,不然是所有核心的负载相加,自然会超过100 如上面 cpu个数是4个,那么cpu可以占到40 ...