HttpUrlConnection请求网络

GET请求

 /**
     * GET方式请求数据
     *
     * @param urlStr
     */
    public static void getRequest(String urlStr) {
        try {
            URL url = new URL(urlStr);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setConnectTimeout(5000);
            httpURLConnection.setReadTimeout(5000);
            httpURLConnection.connect();
            if (HttpURLConnection.HTTP_OK == httpURLConnection.getResponseCode()) {
                //调用getInputStream后才开始正式发起请求
                InputStream inputStream = httpURLConnection.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String line;
                StringBuilder stringBuilder = new StringBuilder();
                while ((line = bufferedReader.readLine()) != null) {
                    stringBuilder.append(line);
                }
                Logger.t(TAG).i(stringBuilder.toString());
                //关闭流对像
                bufferedReader.close();
                inputStreamReader.close();
                inputStream.close();
            } else {
                Logger.t(TAG).i("服务端出错");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

POST请求

 * Post方式请求数据
     *
     * @param urlStr
     * @param params
     */
    public static void postRequest(String urlStr, @NonNull Map<String, String> params) {
        try {
            URL url = new URL(urlStr);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setConnectTimeout(5000);
            httpURLConnection.setReadTimeout(5000);
            //设置请求方式,默认为GET
            httpURLConnection.setRequestMethod("POST");
            //设置允许向httpURLConnection中写入数据,写入的数据都放在内存缓冲区中
            //如果是GET请求,不能设置为true,否则会获取不到数据
            httpURLConnection.setDoOutput(true);
            //获取输出流向里面写入数据一定要在建立连接之前,否则会抛出异常
            OutputStream outputStream = httpURLConnection.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream);
            String paramsString = getPostParams(params);
            Logger.t(TAG).w("params:" + paramsString);
            printWriter.write(paramsString);
            printWriter.close();
            outputStream.close();
            httpURLConnection.connect();
            if (HttpURLConnection.HTTP_OK == httpURLConnection.getResponseCode()) {
                //开始发起请求
                InputStream inputStream = httpURLConnection.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String line;
                StringBuilder stringBuilder = new StringBuilder();
                while ((line = bufferedReader.readLine()) != null) {
                    stringBuilder.append(line);
                }
                Logger.t(TAG).i("服务端返回数据:" + stringBuilder.toString());
                //依次关闭流对象
                bufferedReader.close();
                inputStreamReader.close();
                inputStream.close();
            } else {
                Logger.t(TAG).i("服务端出错");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 将Map集合中的数据转换成post提交的格式
     *
     * @param params
     * @return
     */
    private static String getPostParams(Map<String, String> params) {
        String paramsString = null;
        if (params != null) {
            Set<Map.Entry<String, String>> entrySet = params.entrySet();
            Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
            while (iterator.hasNext()) {
                Map.Entry<String, String> next = iterator.next();
                String key = next.getKey();
                String value = next.getValue();
                if (paramsString == null) {
                    paramsString = key + "=" + value;
                } else {
                    paramsString = "&" + key + "=" + value;
                }
            }
        }
        return paramsString;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值