千家信息网

android post方式给后台服务器传递数据

发表于:2025-12-06 作者:千家信息网编辑
千家信息网最后更新 2025年12月06日,请求方式GET和POST的简单分别:get方式是把参数附加到URL地址后面,如:http://localhost:8080/loginServlet.html?username=123&passwor
千家信息网最后更新 2025年12月06日android post方式给后台服务器传递数据

请求方式GET和POST的简单分别:

get方式是把参数附加到URL地址后面,如:

http://localhost:8080/loginServlet.html?username=123&password=456

post是将请求参数放到请求体中,以流的方式传到服务器,另外上传文件时,一定是post方式


下面的代码是用post方式模拟用户登录

package com.yuanlp.qqloginpost;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;public class MainActivity extends AppCompatActivity {    private static final int LOAD_SUCCESS =1 ;    private static final int LOAD_ERROR =2 ;    private EditText mQqNum;    private EditText mQqPwd;    private CheckBox mCb_rember;    private Button sub;    private String mQq;    private String mPwd;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);       mQqNum= (EditText) findViewById(R.id.et_qqNum);        mQqPwd = (EditText) findViewById(R.id.et_pwd);        mCb_rember = (CheckBox) findViewById(R.id.cb_rember);        sub = (Button) findViewById(R.id.bt_sub);    }    /**     * 按钮对应的点击方法     * @param view     */    public void login(View view){        //Toast.makeText(this,"点击了提交",Toast.LENGTH_SHORT).show();        mQq = mQqNum.getText().toString().trim();        mPwd = mQqPwd.getText().toString().trim();        //mCb_rember.getText().toString().trim();        if (TextUtils.isEmpty(mQq)||TextUtils.isEmpty(mPwd)){            Toast.makeText(this,"QQ号码或者密码为空",Toast.LENGTH_SHORT).show();            return;        }        //这里设置按钮不能点,应为一直点,就一直发送请求,会造成一直请求数据        sub.setEnabled(false);             /**              * 点击按钮事件,在主线程中开启一个子线程进行网络请求              * (因为在4.0只有不支持主线程进行网络请求,所以一般情况下,建议另开启子线程进行网络请求等耗时操作)。              */        //请求网络        new Thread(){            @Override            public void run() {                try {                    Thread.sleep(5000);                    String path="http://192.168.1.111:10010/aos/pdaLogin.jhtml";                    URL url = new URL(path);                    //打开httpurlconnection                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();                    conn.setRequestMethod("POST");              //设置get方式获取数据                    conn.setConnectTimeout(5000);              //设置连接超时时间5秒                    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  //如果设置方式为post,则必须制定该属性                    //将数据进行编码,然后会自动的将该数据放到post中传到后台                    String data="username="+ URLEncoder.encode(mQq,"utf-8")+"&password="+URLEncoder.encode(mPwd,"utf-8");                    //指定长度                    conn.setRequestProperty("Content-length",String.valueOf(data.length()));                    /**                     * post是以流的方式写给服务器                     */                    conn.setDoOutput(true); //指定输出模式                    conn.getOutputStream().write(data.getBytes());  //将要传递的数据写入输出流                    int code = conn.getResponseCode();         // 获取response状态,200表示成功获取资源,404表示资源不存在                    if (code==200){                        InputStream is=conn.getInputStream();                        BufferedReader br=new BufferedReader(new InputStreamReader(is));                        StringBuffer sb=new StringBuffer();                        String len=null;                        while((len=br.readLine())!=null){                            sb.append(len);                        }                        String result=sb.toString();                        /**                         * 这里就不用handler方式来处理子线程的数据了                        */                        runToastAnyThread(result);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }.start();    }    /**     * 在任何线程中都可以弹出吐司     * @param result     */    private void runToastAnyThread(final String result) {        /**         * 在这个run方法里写的任何方法都是在UI线程中执行         */        runOnUiThread(new Runnable() {           @Override            public void run() {               JSONObject jsonObject=null;               try {                   jsonObject=new JSONObject(result);                   String code=jsonObject.get("appcode").toString();                   if ("0".equals(code)){                      Toast.makeText(getApplicationContext(),"登录失败",Toast.LENGTH_SHORT).show();                   }else if("1".equals(code)){                       Toast.makeText(getApplicationContext(),"登录成功",Toast.LENGTH_SHORT).show();                   }                   sub.setEnabled(true);               } catch (JSONException e) {                   e.printStackTrace();               }            }        });    }}


0