• 使用URLConnection 来get和post数据获取返回的数据


    一定要加上对Sd卡读写文件的权限声明,以及访问网络的权限

       <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    get /post 工具

    package com.act262.whpj.utils;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.io.PrintWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Date;
    
    import android.os.Environment;
    import android.util.PrintStreamPrinter;
    
    /**
     * 用于get或者post数据
     */
    public class GetPostUtil {
        public static final String TAG = "GetPostUtil Debug";
    
        /**
         * @param url
         *            传入的url,包括了查询参数
         * @return 返回get后的数据
         */
        public static String sendGet(String url) {
            String result = "";
            // String
            URL realURL = null;
            URLConnection conn = null;
            BufferedReader bufReader = null;
            String line = "";
            try {
                realURL = new URL(url);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("url 格式错误");
            }
    
            try {
                conn = realURL.openConnection();
                // 设置连接参数...conn.setRequestProperty("xx", "xx");
    
                conn.setConnectTimeout(10000); // 10s timeout
                // conn.setRequestProperty("accept", "*/*");
                // conn.setRequestProperty("", "");
    
                conn.connect(); // 连接就把参数送出去了 get方法
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("连接错误");
            }
    
            try {
                bufReader = new BufferedReader(new InputStreamReader(
                        conn.getInputStream(), "gb2312"));
    
                while ((line = bufReader.readLine()) != null) {
                    result += line + "
    ";
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("读取数据错误");
            } finally {
                // 释放资源
                if (bufReader != null) {
                    try {
                        bufReader.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
    
            return result;
        }
    
        /**
         * @param url
         * @param param
         *            查询参数 ,形式如 name=xx&age=xx&sex=xx
         * @return
         */
        public static String sendGet(String url, String param) {
            return sendGet(url + "?" + param);
        }
    
        /**
         * @param url
         *            指定的url,不包括查询参数
         * @param param
         *            查询参数 形式如 name=xx&age=xx&sex=xx
         * @return 返回post后的数据
         */
        public static String sendPost(String url, String param) {
            String result = "";
            URL realURL = null;
            BufferedReader bufReader = null;
            // PrintWriter printWriter = null;
            PrintStreamPrinter out = null;
            URLConnection connection = null;
            String line = "";
            try {
                realURL = new URL(url);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                connection = realURL.openConnection();
                // 设置为可输入输出 post的模式,而且在输出之前不能获取输入的数据,否则报错
                connection.setDoOutput(true);
                connection.setDoOutput(true);
    
                // 已经连接了,所以不能再用connect(),否则报错的
    
                out = new PrintStreamPrinter(new PrintStream(
                        connection.getOutputStream()));
                out.println(param);
                //
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            try {
                bufReader = new BufferedReader(new InputStreamReader(
                        connection.getInputStream(), "gb2312"));
                while ((line = bufReader.readLine()) != null) {
                    result += line + "
    ";
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                // 释放资源
                try {
                    if (bufReader != null) {
                        bufReader.close();
                    }
                    if (out != null) {
                        //
                    }
                } catch (IOException e2) {
                    // TODO: handle exception
                }
    
            }
            return result;
        }
    
        public static void saveFile(String content) {
    
            File file = new File(Environment.getExternalStorageDirectory()
                    .getAbsolutePath(), "file.html");
            if (!file.exists()) {
                try {
                    boolean status = file.createNewFile();
    
                    System.out.println("is create new file :" + status);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            PrintWriter pw = null;
            try {
                FileWriter fw = new FileWriter(file);
                // pw = new PrintWriter(new Date() + ".html");
                // pw.println(content);
    
                fw.write(content);
                fw.flush();
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                if (pw != null) {
                    pw.close();
                }
            }
        }
    
    }

    测试类

    package com.act262.whpj.ui;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    import com.act262.whpj.R;
    import com.act262.whpj.utils.GetPostUtil;
    
    public class StartActivity extends Activity {
    
        Button get, post;
        TextView showTextView;
        Handler handler;
        String result = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_start);
            get = (Button) findViewById(R.id.get);
            post = (Button) findViewById(R.id.post);
            showTextView = (TextView) findViewById(R.id.show);
            handler = new Handler() {
                public void handleMessage(Message msg) {
                    if (msg.what == 0x123) {
                        showTextView.setText(result);
                    }
                }
            };
            post.setOnClickListener(new ButtonListener());
            get.setOnClickListener(new ButtonListener());
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.start, menu);
            return true;
        }
    
        class ButtonListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                case R.id.get:
    
                    new Thread() {
    
                        public void run() {
                            result = GetPostUtil
                                    .sendGet("http://www.baidu.com");
                            handler.sendEmptyMessage(0x123);// 通知UI线程更新界面
                            // Log.d(GetPostUtil.TAG, result);
                            System.out.println(result);
                            GetPostUtil.saveFile(result);
                        }
                    }.start();
                    showTextView.setText(result);
                    break;
                case R.id.post:
                    new Thread() {
                        public void run() {
                            result = GetPostUtil
                                    .sendPost(
                                            "http://www.baidu.com",
                                            "null");
                            handler.sendEmptyMessage(0x123);// 通知UI线程更新界面
                            Log.d(GetPostUtil.TAG, result);
                        }
                    }.start();
                    showTextView.setText(result);
                    break;
                default:
                    break;
                }
            }
        }
    }
    如有雷同,纯属意外! good good study,day day up! go,go,go!
  • 相关阅读:
    Oracle-11g ASM Fast Mirror Resync特性
    Oracle
    Oracle-19C中的DML重定向(DML Redirection)
    Oracle-重建oraInventory仓库
    Oracle-输出存储在ASM中当前数据库客户端未打开的文件列表
    Oracle-19c特性之刷新数据库缓存中的密码文件信息
    Oracle-DG环境进行failover故障演练
    Oracle-switchover转换DG角色
    论衡中校长郗会锁儿子高考移民西藏事件反映出的诸多问题
    退役后记:春夏篇
  • 原文地址:https://www.cnblogs.com/act262/p/3514504.html
Copyright © 2020-2023  润新知