zoukankan      html  css  js  c++  java
  • Java封装servlet发送请求(二)

    /**
    
         * 向指定 URL 发送POST方法的请求
    
         * 
    
         * @param url
    
         *            发送请求的 URL
    
         * @param param
    
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    
         * @return 所代表远程资源的响应结果
    
         */
    
        public static JSONObject sendPost(String url, String param) {
    
            JSONObject jsonObject = null;
    
            
    
            PrintWriter out = null;
    
            BufferedReader in = null;
    
            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(param);
    
                // flush输出流的缓冲
    
                out.flush();
    
                // 定义BufferedReader输入流来读取URL的响应
    
                in = new BufferedReader(
    
                        new InputStreamReader(conn.getInputStream()));
    
                String line;
    
                String str = null;
    
                StringBuffer buffer = new StringBuffer();
    
                while ((line = in.readLine()) != null) {
    
                    buffer.append(line);
    
                }
    
                jsonObject = JSONObject.fromObject(buffer.toString());
    
            } 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 jsonObject;
    
        }
  • 相关阅读:
    Volatile关键字
    ThreadPoolExecutor线程池基本原理及使用
    HashMap线程不安全源码解析(1.7 + 1.8)
    SpringBoot+ajax+formData实现图片上传和回显
    BloomFilter
    POST和GET
    快手电话面试
    Apache SSI 远程命令执行漏洞
    SYSTEM--服务器提权
    封神台靶场练习(2)
  • 原文地址:https://www.cnblogs.com/zh-1721342390/p/9764912.html
Copyright © 2011-2022 走看看