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

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条回答 默认 最新

  • 兔子昂 Java领域优质创作者 2022-10-10 11:10
    关注

    try catch 捕获异常,出现异常那么输出失败

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 gis中用栅格计算器或加权总和后图层不显示,值也明显不对
  • ¥15 python使用python-pptx如何给幻灯片添加只读密码。
  • ¥15 深度神经网络传递自变量损失
  • ¥15 删除s的前驱节点,但是不知道错哪里了
  • ¥15 oracle数据库备份表如何操作
  • ¥15 软件定义网络mininet和onos控制器问题
  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com