• android 76 使用get post方式提交数据


    get方式:

    package com.itheima.getmethod;
    
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    import com.itheima.htmlviewer.utils.Utils;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        Handler handler = new Handler(){
            public void handleMessage(android.os.Message msg) {
                Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();
            }
        };
        
        public void click(View v){
            EditText et_name = (EditText) findViewById(R.id.et_name);
            EditText et_pass = (EditText) findViewById(R.id.et_pass);
            
            final String name = et_name.getText().toString();
            final String pass = et_pass.getText().toString();
            
            Thread t = new Thread(){
                @Override
                public void run() {
                    //提交的数据需要经过url编码(utf-8编码),英文和数字编码后不变,如果是浏览器会自动编码,客户端要手动编码
                    @SuppressWarnings("deprecation")
                    String path = "http://192.168.13.13/Web2/servlet/LoginServlet?name=" + URLEncoder.encode(name) + "&pass=" + pass;
                    
                    try {
                        URL url = new URL(path);
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                        conn.setRequestMethod("GET");
                        conn.setConnectTimeout(5000);
                        conn.setReadTimeout(5000);
                        
                        if(conn.getResponseCode() == 200){
                            InputStream is =conn.getInputStream();
                            String text = Utils.getTextFromStream(is);
                            
                            Message msg = handler.obtainMessage();
                            msg.obj = text;
                            handler.sendMessage(msg);
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
            t.start();
            
            
            
        }
    
    }
    package com.itheima.htmlviewer.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class Utils {
    
        public static String getTextFromStream(InputStream is){
            
            byte[] b = new byte[1024];
            int len = 0;
            //创建字节数组输出流,读取输入流的文本数据时,同步把数据写入数组输出流
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            try {
                while((len = is.read(b)) != -1){
                    bos.write(b, 0, len);
                }
                //把字节数组输出流里的数据转换成字节数组
                String text = new String(bos.toByteArray());
                return text;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    }

     windowsmore编码是gbk,安卓默认编码是utf-8.

    post方式:

    package com.itheima.getmethod;
    
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    import com.itheima.htmlviewer.utils.Utils;
    import com.itheima.postmethod.R;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        Handler handler = new Handler(){
            public void handleMessage(android.os.Message msg) {
                Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();
            }
        };
        
        public void click(View v){
            EditText et_name = (EditText) findViewById(R.id.et_name);
            EditText et_pass = (EditText) findViewById(R.id.et_pass);
            
            final String name = et_name.getText().toString();
            final String pass = et_pass.getText().toString();
            
            Thread t = new Thread(){
                @Override
                public void run() {
                    //提交的数据需要经过url编码,英文和数字编码后不变
                    @SuppressWarnings("deprecation")
                    String path = "http://192.168.13.13/Web2/servlet/LoginServlet";
                    
                    try {
                        URL url = new URL(path);
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                        conn.setRequestMethod("POST");
                        conn.setConnectTimeout(5000);
                        conn.setReadTimeout(5000);
                        
                        //拼接出要提交的数据的字符串
                        String data = "name=" + URLEncoder.encode(name) + "&pass=" + pass;
                        //添加post请求的两行属性
                        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                        conn.setRequestProperty("Content-Length", data.length() + "");
                        
                        //设置打开输出流
                        conn.setDoOutput(true);
                        //拿到客户端像服务端的输出流
                        OutputStream os = conn.getOutputStream();
                        //使用输出流往服务器提交数据,
                        os.write(data.getBytes());//这个时候还没有产生网络交互数据
                        if(conn.getResponseCode() == 200){//建立连接,产生网络交互数据
                            InputStream is = conn.getInputStream();//得到服务器返回的输入流
                            String text = Utils.getTextFromStream(is);
                            
                            Message msg = handler.obtainMessage();
                            msg.obj = text;
                            handler.sendMessage(msg);
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
            t.start();
            
            
            
        }
    
    }
  • 相关阅读:
    WINDOWPOS结构
    HTML 4.01 符号实体
    建立窗体时所响应的消息
    如何用正确的方法来写出质量好的软件的75条体会
    Onload加载多个方法函数
    UML中的一些概念
    aop应用范围
    如何成为“10倍效率”开发者
    网页引入taglibs
    XML编程—CRUD
  • 原文地址:https://www.cnblogs.com/yaowen/p/4932049.html
Copyright © 2020-2023  润新知