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,在类中实现异步操 ...
随机推荐
- [Umbraco] 在umbraco中开发xlst的小窍门
当你在umbraco开发xslt时也可以调用C#里的方法,具体方法参考如下 点击第二个按钮 点击右侧的"Get Extensions" 系统自带了工具类,里面有很多常用也很实用的方 ...
- Unity使用Rider作为IDE的体验
Rider 2017.2.1比较完整的支持Unity开发. 通过添加插件代码实现了直接选择Rider作为编辑器. 支持调试. 支持双击跳转代码. Alt+Insert可以插入Unity event函数 ...
- 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第三周(Hyperparameter tuning, Batch Normalization and Programming Frameworks) —— 2.Programming assignments
Tensorflow Welcome to the Tensorflow Tutorial! In this notebook you will learn all the basics of Ten ...
- Configuration problem: Failed to import bean definitions from relative location
问题现象: 最近开始做新需求,然后在Tomcat上部署项目时,出现了如下报错: [12-05 09:54:27,161 ERROR] ContextLoader.java:351 - Context ...
- 公共技术点( Java 反射 Reflection)
转载路径:http://p.codekk.com/blogs/detail/5596953ed6459ae7934997c5 本文为 Android 开源项目源码解析 公共技术点中的 Java 反射 ...
- koa2 接收post参数
koa2接收Post参数由于没有在上下文对象上解析,所以需要用node 原生req解析. 获取到的参数,要注意转码问题. const Koa = require('koa'); const app = ...
- scala-02-基本数据类型-string-分支循环
一, 基本数据类型 1, scala的数据类型和java类似, 不同的是scala中所有的类型都是引用类型的 Byte Short Int Long Char Float Double String ...
- WebMagic之爬虫监控
访问我的博客 前言 年前闲着无聊,研究了一阵子爬虫技术,接触到爬虫框架 WebMagic,感觉很好用. 在之后的工作中,接手了新站与第三方接口对接的工作,主要的工作是去抓取对方接口的内容:初始的时候, ...
- A Personal Understanding to Matrix Transformation in Graphics
A Personal Understanding to Matrix Transformation in Graphics--------------------------------------- ...
- mysql索引总结(3)-MySQL聚簇索引和非聚簇索引
mysql索引总结(1)-mysql 索引类型以及创建 mysql索引总结(2)-MySQL聚簇索引和非聚簇索引 mysql索引总结(3)-MySQL聚簇索引和非聚簇索引 mysql索引总结(4)-M ...