zoukankan      html  css  js  c++  java
  • Android在线程中发送GET和POST请求 在主线程更新UI

    public class GetPostUtil  
    {  
        /** 
         * 向指定URL发送GET方法的请求 
         *  
         * @param url 
         *            发送请求的URL 
         * @param params 
         *            请求参数,请求参数应该是name1=value1&name2=value2的形式。 
         * @return URL所代表远程资源的响应 
         */  
        public static String sendGet(String url, String params)  
        {  
            String result = "";  
            BufferedReader in = null;  
            try  
            {  
                String urlName = url + "?" + params;  
                URL realUrl = new URL(urlName);  
                // 打开和URL之间的连接  
                URLConnection conn = realUrl.openConnection();  
                // 设置通用的请求属性  
                conn.setRequestProperty("accept", "*/*");  
                conn.setRequestProperty("connection", "Keep-Alive");  
                conn.setRequestProperty("user-agent",  
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");  
                // 建立实际的连接  
                conn.connect();  
                // 获取所有响应头字段  
                Map<String, List<String>> map = conn.getHeaderFields();  
                // 遍历所有的响应头字段  
                for (String key : map.keySet())  
                {  
                    System.out.println(key + "--->" + map.get(key));  
                }  
                // 定义BufferedReader输入流来读取URL的响应  
                in = new BufferedReader(  
                    new InputStreamReader(conn.getInputStream()));  
                String line;  
                while ((line = in.readLine()) != null)  
                {  
                    result += "
    " + line;  
                }  
            }  
            catch (Exception e)  
            {  
                System.out.println("发送GET请求出现异常!" + e);  
                e.printStackTrace();  
            }  
            // 使用finally块来关闭输入流  
            finally  
            {  
                try  
                {  
                    if (in != null)  
                    {  
                        in.close();  
                    }  
                }  
                catch (IOException ex)  
                {  
                    ex.printStackTrace();  
                }  
            }  
            return result;  
        }  
      
        /**  
         * 向指定URL发送POST方法的请求  
         *   
         * @param url  
         *            发送请求的URL  
         * @param params  
         *            请求参数,请求参数应该是name1=value1&name2=value2的形式。  
         * @return URL所代表远程资源的响应  
         */  
        public static String sendPost(String url, String params)  
        {  
            PrintWriter out = null;  
            BufferedReader in = null;  
            String result = "";  
            try  
            {  
                URL realUrl = new URL(url);  
                // 打开和URL之间的连接  
                URLConnection conn = realUrl.openConnection();  
                // 设置通用的请求属性  
                conn.setRequestProperty("accept", "*/*");  
                conn.setRequestProperty("connection", "Keep-Alive");  
                conn.setRequestProperty("user-agent",  
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");  
                // 发送POST请求必须设置如下两行  
                conn.setDoOutput(true);  
                conn.setDoInput(true);  
                // 获取URLConnection对象对应的输出流  
                out = new PrintWriter(conn.getOutputStream());  
                // 发送请求参数  
                out.print(params);  
                // flush输出流的缓冲  
                out.flush();  
                // 定义BufferedReader输入流来读取URL的响应  
                in = new BufferedReader(  
                    new InputStreamReader(conn.getInputStream()));  
                String line;  
                while ((line = in.readLine()) != null)  
                {  
                    result += "
    " + line;  
                }  
            }  
            catch (Exception e)  
            {  
                System.out.println("发送POST请求出现异常!" + e);  
                e.printStackTrace();  
            }  
            // 使用finally块来关闭输出流、输入流  
            finally  
            {  
                try  
                {  
                    if (out != null)  
                    {  
                        out.close();  
                    }  
                    if (in != null)  
                    {  
                        in.close();  
                    }  
                }  
                catch (IOException ex)  
                {  
                    ex.printStackTrace();  
                }  
            }  
            return result;  
        }  
    }  

    Activity

    public class GetPostMain extends Activity  
    {  
        Button get , post;  
        EditText show;  
        @Override  
        public void onCreate(Bundle savedInstanceState)  
        {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            get = (Button) findViewById(R.id.get);  
            post = (Button) findViewById(R.id.post);  
            show = (EditText)findViewById(R.id.show);  
            //利用Handler更新UI  
            final Handler h = new Handler(){  
                @Override  
                public void handleMessage(Message msg) {  
                    if(msg.what==0x123){  
                        show.setText(msg.obj.toString());  
                    }  
                }  
            };  
              
            get.setOnClickListener(new OnClickListener()  
            {  
                @Override  
                public void onClick(View v)  
                {  
                    new Thread(new AccessNetwork("GET", "http://192.168.1.88:8080/abc/a.jsp", null, h)).start();  
                }             
            });  
            post.setOnClickListener(new OnClickListener()  
            {  
                @Override  
                public void onClick(View v)  
                {  
                    new Thread(new AccessNetwork("POST", "http://192.168.1.88:8080/abc/login.jsp", "name=crazyit.org&pass=leegang", h)).start();  
                }             
            });   
        }  
    }  
    class AccessNetwork implements Runnable{  
        private String op ;  
        private String url;  
        private String params;  
        private Handler h;  
          
        public AccessNetwork(String op, String url, String params,Handler h) {  
            super();  
            this.op = op;  
            this.url = url;  
            this.params = params;  
            this.h = h;  
        }  
      
        @Override  
        public void run() {  
            Message m = new Message();  
            m.what = 0x123;  
            if(op.equals("GET")){  
                Log.i("iiiiiii","发送GET请求");  
                m.obj = GetPostUtil.sendGet(url, params);  
                Log.i("iiiiiii",">>>>>>>>>>>>"+m.obj);  
            }  
            if(op.equals("POST")){  
                Log.i("iiiiiii","发送POST请求");  
                m.obj = GetPostUtil.sendPost(url, params);  
                Log.i("gggggggg",">>>>>>>>>>>>"+m.obj);  
            }  
            h.sendMessage(m);  
        }  
    }  
  • 相关阅读:
    Delphi实战中讲解FormCreate,FormShow,FormActivate
    delphi Try except on e:Exception do
    Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本
    delphi dbgrid中如何自动生成序号
    DBDateTimePicker;
    Delphi控件开发浅入深出(八)
    delphi中日期类型TDateTime使用总结
    在DBGrid录数据时,如何判断光标位置是在数据的最左或最右,如果是最左或最右则在按左右光标键时光标跳到上一格或下一格,如果是在数据中
    请问如何按Enter键让DBGrid的光标向右移以及换行?(0分)
    tdbgrid中用enter仿真tab键盘_delphi教程
  • 原文地址:https://www.cnblogs.com/xiaoli3007/p/4205883.html
Copyright © 2011-2022 走看看