zoukankan      html  css  js  c++  java
  • Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据

    /** 
     * HTTP请求 
     * @author kesenhoo 
     * 
     */  
    public class HttpRequest   
    {     
        public static boolean sendXML(String path, String xml)throws Exception  
        {  
            byte[] data = xml.getBytes();  
            URL url = new URL(path);  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            conn.setRequestMethod("POST");  
            conn.setConnectTimeout(5 * 1000);  
            //如果通过post提交数据,必须设置允许对外输出数据  
            conn.setDoOutput(true);  
            conn.setRequestProperty("Content-Type""text/xml; charset=UTF-8");  
            conn.setRequestProperty("Content-Length", String.valueOf(data.length));  
            OutputStream outStream = conn.getOutputStream();  
            outStream.write(data);  
            outStream.flush();  
            outStream.close();  
            if(conn.getResponseCode()==200)  
            {  
                return true;  
            }  
            return false;  
        }  
        /** 
         * 通过get方式提交参数给服务器 
         * @param path 
         * @param params 
         * @param enc 
         * @return 
         * @throws Exception 
         */  
        public static boolean sendGetRequest(String path, Map<String, String> params, String enc) throws Exception  
        {  
            //构造如下形式的字符串,这里的字符串依情况不同  
            // ?method=save&title=435435435&timelength=89&        
            //使用StringBuilder对象  
            StringBuilder sb = new StringBuilder(path);  
            sb.append('?');       
            //迭代Map  
            for(Map.Entry<String, String> entry : params.entrySet())  
            {  
                sb.append(entry.getKey()).append('=')  
                    .append(URLEncoder.encode(entry.getValue(), enc)).append('&');  
            }  
            sb.deleteCharAt(sb.length()-1);  
            //打开链接  
            URL url = new URL(sb.toString());  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            conn.setRequestMethod("GET");  
            conn.setConnectTimeout(5 * 1000);  
            //如果请求响应码是200,则表示成功  
            if(conn.getResponseCode()==200)  
            {  
                return true;  
            }  
            return false;  
        }  
          
        /** 
         * 通过Post方式提交参数给服务器 
         * @param path 
         * @param params 
         * @param enc 
         * @return 
         * @throws Exception 
         */  
        public static boolean sendPostRequest(String path, Map<String, String> params, String enc) throws Exception  
        {  
            //需要构造的字符串形式如下:  
            // title=dsfdsf&timelength=23&method=save  
            StringBuilder sb = new StringBuilder();  
            //如果参数不为空  
            if(params!=null && !params.isEmpty())  
            {  
                for(Map.Entry<String, String> entry : params.entrySet())  
                {  
                    //Post方式提交参数的话,不能省略内容类型与长度  
                    sb.append(entry.getKey()).append('=')  
                        .append(URLEncoder.encode(entry.getValue(), enc)).append('&');  
                }  
                sb.deleteCharAt(sb.length()-1);  
            }  
            //得到实体的二进制数据  
            byte[] entitydata = sb.toString().getBytes();  
            URL url = new URL(path);  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            conn.setRequestMethod("POST");  
            conn.setConnectTimeout(5 * 1000);  
            //如果通过post提交数据,必须设置允许对外输出数据  
            conn.setDoOutput(true);  
            //这里只设置内容类型与内容长度的头字段  
            //内容类型Content-Type: application/x-www-form-urlencoded  
            //内容长度Content-Length: 38  
            conn.setRequestProperty("Content-Type""application/x-www-form-urlencoded");  
            conn.setRequestProperty("Content-Length", String.valueOf(entitydata.length));  
            OutputStream outStream = conn.getOutputStream();  
            //把实体数据写入是输出流  
            outStream.write(entitydata);  
            //内存中的数据刷入  
            outStream.flush();  
            outStream.close();  
            //如果请求响应码是200,则表示成功  
            if(conn.getResponseCode()==200)  
            {  
                return true;  
            }  
            return false;  
        }  
          
        /** 
         * 在遇上HTTPS安全模式或者操作cookie的时候使用HTTPclient会方便很多 
         * 使用HTTPClient(开源项目)向服务器提交参数 
         * @param path 
         * @param params 
         * @param enc 
         * @return 
         * @throws Exception 
         */  
        public static boolean sendRequestFromHttpClient(String path, Map<String, String> params, String enc) throws Exception  
        {  
            //需要把参数放到NameValuePair  
            List<NameValuePair> paramPairs = new ArrayList<NameValuePair>();  
            if(params!=null && !params.isEmpty())  
            {  
                for(Map.Entry<String, String> entry : params.entrySet())  
                {  
                    paramPairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));  
                }  
            }  
            //对请求参数进行编码,得到实体数据  
            UrlEncodedFormEntity entitydata = new UrlEncodedFormEntity(paramPairs, enc);  
            //构造一个请求路径  
            HttpPost post = new HttpPost(path);   
            //设置请求实体  
            post.setEntity(entitydata);  
            //浏览器对象  
            DefaultHttpClient client = new DefaultHttpClient();   
            //执行post请求  
            HttpResponse response = client.execute(post);  
            //从状态行中获取状态码,判断响应码是否符合要求  
            if(response.getStatusLine().getStatusCode()==200)  
            {  
                return true;  
            }  
            return false;  
        }  
    }  
  • 相关阅读:
    EasyUI
    intellij idea打包maven项目
    struts2框架详解
    java电子书
    查看mysql安装路径
    springboot 集成 vue
    C#中的属性
    C#中的时间戳
    int.TryParse非预期执行引发的思考
    IQueryable 和 IEnumerable 的区别
  • 原文地址:https://www.cnblogs.com/top5/p/2947393.html
Copyright © 2011-2022 走看看