归去来兮-zangcc 2022-10-10 11:03 采纳率: 80%
浏览 45
已结题

Java-Httpclient如何输出请求成功和失败的特征?

问题遇到的现象和发生背景

我是用java的httpsclient去发了http请求,主要是为了访问一个url,然后访问状态码和请求结果的。
现在问题是:请求成功的时候可以返回状态码200,还有我的请求判断与否的字符串“请求成功”,但是当我随便输入一个端口或者是错误的url的时候,就直接异常,我的请求判断字符串“请求失败”没办法显示,不知道怎么解决。

核心功能代码在下面:

用代码块功能插入代码,请勿粘贴截图

        String result = null;

        //创建实例;
        CloseableHttpClient client = HttpClients.createDefault();

        // 参数
        StringBuilder params = new StringBuilder();
        // 字符数据最好encoding以下;这样一来,某些特殊字符才能传过去(如:某人的名字就是“&”,不encoding的话,传不过去)
        params.append("s=").append(URLEncoder.encode(Parm1, "utf-8"));

        //System.out.println("请求url为:"+url0+Parm0+params);
        //get请求
        HttpGet httpGet = new HttpGet(url0+Parm0+params);

        // 配置请求参数实例(不需要可忽略)
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(80000)// 设置连接主机服务超时时间
                .setConnectionRequestTimeout(80000)// 设置连接请求超时时间
                .setSocketTimeout(80000)// 设置读取数据连接超时时间
                .build();
        httpGet.setConfig(requestConfig);
        httpGet.addHeader("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0");

        //发送请求
        CloseableHttpResponse response = null;
        try {
            response = client.execute(httpGet);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        //获取实例
        HttpEntity entity = response.getEntity();
        //转化字符串
        String string = null;
        try {
            string = EntityUtils.toString(entity,"UTF-8");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        Boolean isVul = string.contains("Build Date");
        if (isVul){
            result= "连接成功。状态码:"+response.getStatusLine()+"\n";
        }
        else {
            result = "连接不成功。";
        }
        response.close();
        client.close();
        System.out.println("返回结果:"+result);
        return result;
    }
}


运行结果及报错内容

当请求127.0.0.1:8080这个正确的ip和端口的时候,我判断是否请求成功的字符串是能显示的:

img


当时,当我把端口一改,换成一个不存在或者是无法访问的,我想输出请求连接失败,但是不行。直接就是异常。

img

我想要达到的结果

我想要的其实很简单,就是请求访问能成功就是成功,请求失败就输出请求无法连接,失败。但是不知道要怎么做if判断,希望大家能能帮弟弟我解决一下。

  • 写回答

2条回答

      报告相同问题?

      问题事件

      • 系统已结题 10月18日
      • 已采纳回答 10月10日
      • 创建了问题 10月10日

      悬赏问题

      • ¥15 使用DWY100k数据集对UEA进行测试,出现报错:IndexError: index 125000 is out of bounds for axis 0 with size 95500
      • ¥15 前端vue实现根据图片url生成pdf文件
      • ¥15 RfidReader资源Q个
      • ¥20 user-agent是否是唯一的,有没有可能相同
      • ¥15 关于#开会#的问题,如何解决?(语言-c++)
      • ¥15 关于#二十四点问题#的问题
      • ¥15 运行kitex的demon出错(求大家解决)
      • ¥15 开发一个类似 typora 这样的软件需要多少钱?
      • ¥15 clearcase7.0安装包
      • ¥15 断点回归模型月度核密度检验不连续