Android 采用post方式提交数据到服务器

接着上篇《Android 采用get方式提交数据到服务器》,本文来实现采用post方式提交数据到服务器

首先对比一下get方式和post方式:

修改布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:inputType="text" />

    <EditText
        android:id="@+id/et_pwd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword" />
    <Button
        android:onClick="LoginByGet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="GET方式登录"
        />
     <Button
        android:onClick="LoginByPost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="POST方式登录"
        />

</LinearLayout>

添加代码:

package com.wuyudong.loginclient;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    private EditText et_name;
    private EditText et_pwd;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et_name = (EditText) findViewById(R.id.et_name);
        et_pwd = (EditText) findViewById(R.id.et_pwd);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);

    }

    public void LoginByGet(View view) {

        String name = et_name.getText().toString().trim();
        String pwd = et_pwd.getText().toString().trim();

        if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
            Toast.makeText(this, "用户名密码不能为空", 0).show();
        } else {
            // 模拟http请求,提交数据到服务器
            String path = "http://169.254.168.71:8080/web/LoginServlet?username="
                    + name + "&password=" + pwd;
            try {
                URL url = new URL(path);
                // 2.建立一个http连接
                HttpURLConnection conn = (HttpURLConnection) url
                        .openConnection();
                // 3.设置一些请求方式
                conn.setRequestMethod("GET");// 注意GET单词字幕一定要大写
                conn.setRequestProperty(
                        "User-Agent",
                        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");

                int code = conn.getResponseCode(); // 服务器的响应码 200 OK //404 页面找不到
                                                    // // 503服务器内部错误
                if (code == 200) {
                    InputStream is = conn.getInputStream();
                    // 把is的内容转换为字符串
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] buffer = new byte[1024];
                    int len = -1;
                    while ((len = is.read(buffer)) != -1) {
                        bos.write(buffer, 0, len);
                    }
                    String result = new String(bos.toByteArray());
                    is.close();
                    Toast.makeText(this, result, 0).show();

                } else {
                    Toast.makeText(this, "请求失败,失败原因: " + code, 0).show();
                }

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(this, "请求失败,请检查logcat日志控制台", 0).show();
            }

        }

    }

    /**
     * 采用post的方式提交数据到服务器
     *
     * @param view
     */
    public void LoginByPost(View view) {
        String name = et_name.getText().toString().trim();
        String pwd = et_pwd.getText().toString().trim();

        if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
            Toast.makeText(this, "用户名密码不能为空", 0).show();
        } else {
            try {
                String path = "http://169.254.168.71:8080/web/LoginServlet?username="
                        + name + "&password=" + pwd;
                // 1.定义请求url
                URL url = new URL(path);
                // 2.建立一个http的连接
                HttpURLConnection conn = (HttpURLConnection) url
                        .openConnection();
                // 3.设置一些请求的参数
                conn.setRequestMethod("POST");
                conn.setRequestProperty(
                        "User-Agent",
                        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
                conn.setRequestProperty("Content-Type",
                        "application/x-www-form-urlencoded");
                String data = "username=" + name + "&password=" + pwd;
                conn.setRequestProperty("Content-Length", data.length() + "");
                conn.setConnectTimeout(5000);//设置连接超时时间
                conn.setReadTimeout(5000); //设置读取的超时时间

                // 4.一定要记得设置 把数据以流的方式写给服务器
                conn.setDoOutput(true); // 设置要向服务器写数据
                conn.getOutputStream().write(data.getBytes());

                int code = conn.getResponseCode(); // 服务器的响应码 200 OK //404 页面找不到
                // // 503服务器内部错误
                if (code == 200) {
                    InputStream is = conn.getInputStream();
                    // 把is的内容转换为字符串
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] buffer = new byte[1024];
                    int len = -1;
                    while ((len = is.read(buffer)) != -1) {
                        bos.write(buffer, 0, len);
                    }
                    String result = new String(bos.toByteArray());
                    is.close();
                    Toast.makeText(this, result, 0).show();

                } else {
                    Toast.makeText(this, "请求失败,失败原因: " + code, 0).show();
                }

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(this, "请求失败,请检查logcat日志控制台", 0).show();
            }
        }

    }
}
时间: 2024-10-24 23:12:07

Android 采用post方式提交数据到服务器的相关文章

Android 采用get方式提交数据到服务器

首先搭建模拟web 服务器,新建动态web项目,servlet代码如下: package com.wuyudong.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet

Android(java)学习笔记210:采用post请求提交数据到服务器

1.POST请求:  数据是以流的方式写给服务器 优点:(1)比较安全 (2)长度不限制 缺点:编写代码比较麻烦   2.我们首先在电脑模拟下POST请求访问服务器的场景: 我们修改之前编写的login.jsp代码,如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java"

Android 使用Post方式提交数据(登录)

在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POST了,GET请求可以获取静态页面,也可以把参数放在URL字符串的后面,传递给服务器.POST与GET的不同之处在于POST的参数不是放在URL字符串里面,而是放在HTTP请求数据中. 本文将使用标准Java接口HttpURLConnection,以一个实例演示如何使用POST方式向服务器提交数据,并

httpclient方式提交数据到服务器

get方式:             //使用HttpClient请求服务器将用户密码发送服务器验证                 try{                 String path = "http://192.168.13.83:8080/xuexi/servlet/LoginServlet?username="+URLEncoder.encode(username,"utf-8")+"&pwd="+URLEncoder

Android(java)学习笔记209:采用get请求提交数据到服务器

1.GET请求:    组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性  (2)长度有限不能超过4K(http协议限制),IE浏览器限制至1K 优点:代码方便编写 2.我们首先在电脑模拟下访问服务器的场景 (1)使用Eclipse 新建一个 " 动态web项目 ",如下: (2)然后编写一个servlet程序(运行在服务端),命名为" LoginServlet ",如下: 代码内容如下: 1 package com.himi.we

采用get的方式提交数据到服务器

1  效果演示: 2代码演示: Javaee的部分的代码: Android代码: 布局代码: 配置网路访问权限: 把流里面的内容 转化成 String 字符串 实现get提交到服务器 主方法:

android 通过post方式提交数据的最简便有效的方法

public boolean post(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文数据需要经过URL编码 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + passwo

Android提交数据到服务器的两种方式四种方法

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法. /** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @p

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.backupsms" android:versionCode="1