zoukankan      html  css  js  c++  java
  • AsyncTask POST请求

    布局:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <android.support.constraint.ConstraintLayout
     3     xmlns:android="http://schemas.android.com/apk/res/android"
     4     xmlns:app="http://schemas.android.com/apk/res-auto"
     5     xmlns:tools="http://schemas.android.com/tools"
     6     android:layout_width="match_parent"
     7     android:layout_height="match_parent"
     8     tools:context="net.bwie.network.activity.PostActivity">
     9 
    10     <Button
    11         android:id="@+id/post_btn"
    12         android:text="post请求"
    13         android:layout_width="wrap_content"
    14         android:layout_height="wrap_content"/>
    15 
    16 </android.support.constraint.ConstraintLayout>

    Activity:

      1 /**
      2  * 当前案例:
      3  * 上传姓名和年龄,返回JSON字符串
      4  */
      5 public class PostActivity extends AppCompatActivity implements View.OnClickListener {
      6 
      7     protected Button mPostBtn;
      8 
      9     @Override
     10     protected void onCreate(Bundle savedInstanceState) {
     11         super.onCreate(savedInstanceState);
     12         super.setContentView(R.layout.activity_post);
     13         initView();
     14     }
     15 
     16     @Override
     17     public void onClick(View view) {
     18         if (view.getId() == R.id.post_btn) {
     19             doPost();
     20         }
     21     }
     22 
     23     // 使用异步任务执行POST请求
     24     private void doPost() {
     25         String url = "http://localhost:8080/postdemo";
     26 
     27         PostTask task = new PostTask();
     28         task.execute(url);
     29     }
     30 
     31     private void initView() {
     32         mPostBtn = (Button) findViewById(R.id.post_btn);
     33         mPostBtn.setOnClickListener(PostActivity.this);
     34     }
     35 
     36     private class PostTask extends AsyncTask<String, Void, Person> {
     37 
     38         @Override
     39         protected Person doInBackground(String... params) {
     40             String requestUrl = params[0];
     41 
     42             URL url = null;
     43             try {
     44                 url = new URL(requestUrl);
     45                 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
     46                 // 设置POST请求
     47                 connection.setRequestMethod("POST");
     48                 // 设置可向服务器输出
     49                 connection.setDoOutput(true);
     50                 // 打开连接
     51                 connection.connect();
     52 
     53                 // 打开连接后,向服务端写要提交的参数
     54                 // 参数格式:“name=asdasdas&age=123123”
     55                 StringBuilder stringBuilder = new StringBuilder();
     56                 stringBuilder.append("name=")
     57                         .append("wuyanzu")// 拼接自己传入的姓名
     58                         .append("&")
     59                         .append("age=")
     60                         .append("123");// 拼接自己传入的年龄
     61                 // 获取向服务器写数据的输出流
     62                 connection.getOutputStream()
     63                         .write(stringBuilder.toString().getBytes());
     64 
     65                 // 提交数据后,获取来自服务器的json数据
     66                 if (connection.getResponseCode() == 200) {
     67                     BufferedReader br = null;
     68                     br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
     69 
     70                     String json = "";
     71                     String line = "";
     72 
     73                     while ((line = br.readLine()) != null) {
     74                         json += line.trim();
     75                     }
     76 
     77                     // 解析
     78                     Gson gson = new Gson();
     79                     Person person = gson.fromJson(json, Person.class);
     80                     return person;
     81 
     82                 }
     83 
     84             } catch (Exception e) {
     85                 e.printStackTrace();
     86             }
     87 
     88 
     89             return null;
     90         }
     91 
     92         @Override
     93         protected void onPostExecute(Person person) {
     94             super.onPostExecute(person);
     95 
     96             Log.d("1507", "name:" + person.getName() + ", age: " + person.getAge());
     97         }
     98     }
     99 
    100 }

    Bean:

     1 package net.bwie.network.bean;
     2 
     3 public class Person {
     4 
     5     private String name = "";
     6     private String age = "";
     7 
     8     public String getName() {
     9         return name;
    10     }
    11 
    12     public void setName(String name) {
    13         this.name = name;
    14     }
    15 
    16     public String getAge() {
    17         return age;
    18     }
    19 
    20     public void setAge(String age) {
    21         this.age = age;
    22     }
    23 }

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

  • 相关阅读:
    485串口接线
    mvc3 升级mvc5
    VB连接ACCESS数据库,使用 LIKE 通配符问题
    VB6 读写西门子PLC
    可用的 .net core 支持 RSA 私钥加密工具类
    解决 Win7 远程桌面 已停止工作的问题
    解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题
    解决安装 .net framework 发生 extracting files error 问题
    CentOS7 安装配置笔记
    通过特殊处理 Resize 事件解决 WinForm 加载时闪烁问题的一个方法
  • 原文地址:https://www.cnblogs.com/SongYongQian/p/7878852.html
Copyright © 2011-2022 走看看