zoukankan      html  css  js  c++  java
  • java发送http连接

    原生方式:@转载文章

    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Map;
    
    import org.apache.commons.lang.StringUtils;
    
    public class HttpGetUtil {
         /**
         * Post 请求超时时间和读取数据的超时时间均为2000ms。
         *
         * @param urlPath       post请求地址
         * @param parameterData post请求参数
         * @return String json字符串,成功:code=1001,否者为其他值
         * @throws Exception 链接超市异常、参数url错误格式异常
         */
        public static String doPost(String urlPath, String parameterData, String who, String ip) throws Exception {
    
            if (null == urlPath || null == parameterData) { // 避免null引起的空指针异常
                return "";
            }
            URL localURL = new URL(urlPath);
            URLConnection connection = localURL.openConnection();
            HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
    
            httpURLConnection.setDoOutput(true);
            if (!StringUtils.isEmpty(who)) {
                httpURLConnection.setRequestProperty("who", who);
            }
            if (!StringUtils.isEmpty(ip)) {
                httpURLConnection.setRequestProperty("clientIP", ip);
            }
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
            httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterData.length()));
            httpURLConnection.setConnectTimeout(18000);
            httpURLConnection.setReadTimeout(18000);
    
            OutputStream outputStream = null;
            OutputStreamWriter outputStreamWriter = null;
            InputStream inputStream = null;
            InputStreamReader inputStreamReader = null;
            BufferedReader reader = null;
            StringBuilder resultBuffer = new StringBuilder();
            String tempLine = null;
    
            try {
                outputStream = httpURLConnection.getOutputStream();
                outputStreamWriter = new OutputStreamWriter(outputStream);
    
                outputStreamWriter.write(parameterData.toString());
                outputStreamWriter.flush();
    
                if (httpURLConnection.getResponseCode() >= 300) {
                    throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
                }
    
                inputStream = httpURLConnection.getInputStream(); // 真正的发送请求到服务端
                inputStreamReader = new InputStreamReader(inputStream);
                reader = new BufferedReader(inputStreamReader);
    
                while ((tempLine = reader.readLine()) != null) {
                    resultBuffer.append(tempLine);
                }
    
            } finally {
    
                if (outputStreamWriter != null) {
                    outputStreamWriter.close();
                }
    
                if (outputStream != null) {
                    outputStream.close();
                }
    
                if (reader != null) {
                    reader.close();
                }
    
                if (inputStreamReader != null) {
                    inputStreamReader.close();
                }
    
                if (inputStream != null) {
                    inputStream.close();
                }
            }
            return resultBuffer.toString();
        }
    
        public static String doPost(String url, Map<String, Object> params) throws Exception {
            StringBuffer sb = new StringBuffer();
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                sb.append(entry.getKey())
                        .append("=")
                        .append(entry.getValue())
                        .append("&");
            }
    
            // no matter for the last '&' character
    
            return doPost(url, sb.toString(), "", "");
        }
    
        /**
         * 向指定URL发送GET方法的请求
         *
         * @param url   发送请求的URL
         * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return URL 所代表远程资源的响应结果
         */
        public static String sendGet(String url, String param, String who, String ip) {
            String result = "";
            BufferedReader in = null;
            try {
                String urlNameString = url;
                if (!"".equals(param)) {
                    urlNameString = urlNameString + "?" + param;
                }
                URL realUrl = new URL(urlNameString);
                // 打开和URL之间的连接
                URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                if (!StringUtils.isEmpty(who)) {
                    connection.setRequestProperty("who", who);
                }
                if (!StringUtils.isEmpty(ip)) {
                    connection.setRequestProperty("clientIP", ip);
                }
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
    
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                     e2.printStackTrace();
                }
            }
            return result;
        }
    
        public static String sendGet(String url, Map<String, Object> params) throws Exception {
            StringBuffer sb = new StringBuffer();
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                sb.append(entry.getKey())
                        .append("=")
                        .append(entry.getValue())
                        .append("&");
            }
    
            // no matter for the last '&' character
    
            return sendGet(url, sb.toString(), "", "");
        }
    
    
    }

    更多方式:@参考文章

  • 相关阅读:
    android 防止按钮连续点击的方法(Button,ImageButton等)
    android listview 异步加载图片并防止错位
    Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
    Smart3D系列教程5之 《案例实战演练2——大区域的地形三维重建》
    Smart3D系列教程4之 《案例实战演练1——小物件的照片三维重建》
    Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
    Smart3D系列教程2之 《为什么三维重建效果这么差?——探探那些被忽略的拍照要求和技巧》
    Smart3D系列教程1之《浅谈无人机倾斜摄影建模的原理与方法》
    如何通过倾斜摄影数据手动配置s3c索引文件?
    无人机倾斜摄影三维展示应该如此简单
  • 原文地址:https://www.cnblogs.com/yanan7890/p/9651305.html
Copyright © 2011-2022 走看看