• HttpUrlConnection获取非200状态码的响应体


    HttpUrlConnection 请求完成后  获取响应体的方式根据状态码不同而不同

    200状态码:connection.getInputStream();

    非200状态码:connection.getErrorStream();

        public static Result sendPost(String httpUrl, String param) throws IOException,MalformedURLException  {
            HttpURLConnection connection = null;
             InputStream is = null;
             OutputStream os = null;
             BufferedReader br = null;
             Result result = new Result();
             try {
                 URL url = new URL(httpUrl);
                 // 通过远程url连接对象打开连接
                 connection = (HttpURLConnection) url.openConnection();
                 // 设置连接请求方式
                 connection.setRequestMethod("POST");
                 // 设置连接主机服务器超时时间:15000毫秒
                 connection.setConnectTimeout(60000);
                 // 设置读取主机服务器返回数据超时时间:60000毫秒
                 connection.setReadTimeout(60000);
                 // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
                 connection.setDoOutput(true);
                 // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
                 connection.setDoInput(true);
                 // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                 // 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
                 connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
                 // 通过连接对象获取一个输出流
                 os = connection.getOutputStream();
                 if(param!=null){
                     os.write(param.getBytes());
                 }
                 // 通过连接对象获取一个输入流,向远程读取
                 if (connection.getResponseCode() == 200) {
                     is = connection.getInputStream();
                     // 对输入流对象进行包装:charset根据工作项目组的要求来设置
                     br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                     StringBuffer sbf = new StringBuffer();
                     String temp = null;
                     // 循环遍历一行一行读取数据
                     while ((temp = br.readLine()) != null) {
                         sbf.append(temp);
                         sbf.append("
    ");
                     }
                     result=Results.successWithData(sbf.toString(), "200", "获取成功");
                 }else {
                     try {
                        is = connection.getErrorStream();
                         // 对输入流对象进行包装:charset根据工作项目组的要求来设置
                         br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                         StringBuffer sbf = new StringBuffer();
                         String temp = null;
                         // 循环遍历一行一行读取数据
                         while ((temp = br.readLine()) != null) {
                             sbf.append(temp);
                             sbf.append("
    ");
                         }
                         result.setMsg(sbf.toString());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                     result.setCode(String.valueOf(connection.getResponseCode()));
                     result.setSuccess(false);
                 }
        
             } catch (MalformedURLException e) {
                throw e;
             } catch (IOException e) {
                 throw e;
             } finally {
                 // 关闭资源
                 if (null != br) {
                     try {
                         br.close();
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                 }
                 if (null != os) {
                     try {
                         os.close();
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                 }
                 if (null != is) {
                     try {
                         is.close();
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                      }
                 // 断开与远程地址url的连接
                 connection.disconnect();
             }
             return result;
        }
    View Code
  • 相关阅读:
    一些常用的 Git 进阶知识与技巧
    自动充值平台开发进程之联通卡密一最终实现
    自动充值平台开发进程之联通卡密一准备阶段
    自动充值平台开发进程之联通卡密一显示界面
    [注入] 突破 SESSION 0 隔离的远线程注入
    git 撤销 push 提交
    [C#] 获取时间戳(秒/毫秒)
    html判断浏览器是否支持,不支持则输出
    [C#] MD5 加密
    [Windows驱动开发] 进程的pid handle eprocess之间相互转换的方法
  • 原文地址:https://www.cnblogs.com/xiatc/p/12421300.html
Copyright © 2020-2023  润新知