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

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

  • 青山abc Java领域优质创作者 2022-10-10 11:10
    关注

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

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥50 xslt如何让block撑满页面
  • ¥15 vs的显示无法启动IIS Express Web服务器,怎么解决?
  • ¥20 一个python博客项目的相关图例
  • ¥15 轮廓提取也提取不到,有没有别的方法,如何解决?
  • ¥50 Js和c++如何将含有图片的excel文件上传到后台服务器
  • ¥15 光电神经网络,FPGA
  • ¥20 通过防火墙出入站阻止游戏程序联网失效
  • ¥15 鼠标是可以在QT界面上移动的,但是热拔插鼠标无法移动了同时板子上是没问题的,如何解决?
  • ¥15 iframe嵌套显示问题
  • ¥20 【UE4】别人打包好的ue4游戏我该如何在自己的ue4引擎上运行