Poast

来源:互联网 发布:软件部职责要求 编辑:程序博客网 时间:2024/05/22 00:11
package net.bwie.network.activity;import android.content.Context;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import com.google.gson.Gson;import net.bwie.network.R;import net.bwie.network.bean.Person;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;/** * 当前案例: * 上传姓名和年龄,返回JSON字符串 */public class PostActivity extends AppCompatActivity implements View.OnClickListener {    protected Button mPostBtn;    public static void startActivity(Context context) {        context.startActivity(new Intent(context, PostActivity.class));    }    @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://172.21.66.7: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];//            try {                URL url = new URL(requestUrl);                HttpURLConnection connection = (HttpURLConnection) url.openConnection();                // 设置POST请求                connection.setRequestMethod("POST");                // 设置可向服务器输出                connection.setDoOutput(true);                connection.setDoInput(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();                Log.d("1507", e.getMessage());            }            return null;        }        @Override        protected void onPostExecute(Person person) {            super.onPostExecute(person);            Log.d("1507", "name:" + person.getName() + ", age: " + person.getAge());        }    }}
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;    }}
<?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>
<uses-permission android:name="android.permission.INTERNET"/>