httpclient调用execute(httpget)报错

官方文档上是这样写的:正在学习,不明白为什么报错,求解... 官方文档上是这样写的:

正在学习,不明白为什么报错,求解
展开
 我来答
balsum
推荐于2017-10-13 · TA获得超过311个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:185万
展开全部

你是直接在类里定义这三个属性初始化的吗?比如:

public class ${
    CloseableHttpClient client = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet("");
    CloseableHttpResponse response = client.execute(httpGet);
}

如果是这样可不行的哦,client.execute(httpGet)明确抛出了一个叫ClientProtoclException的异常,你需要做的是捕获或者再次抛出它。像这样就好了

public class ${
    public $() throws ClientProtoclException, IOException {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet("");
        CloseableHttpResponse response = client.execute(httpGet);
    }
}

或者在你的main函数里抛出

public class ${
    public static void main() throws ClientProtoclException, IOException {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet("");
        CloseableHttpResponse response = client.execute(httpGet);
    }
}

或者是捕获:

public class ${
    public static void main() {
        try {
            CloseableHttpClient client = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet("");
            CloseableHttpResponse response = client.execute(httpGet);
        }catch(Exception e) {
        
        }
    }
}

记得,抛出的异常必须再次抛出throws Exception或捕获,抛出异常只能在方法上定义,而捕获也只能在一个代码块里{}做(两个大括号之间,但并不包括类的两个大括号)。

Utrecht1984
2015-04-22 · TA获得超过157个赞
知道答主
回答量:72
采纳率:0%
帮助的人:86.1万
展开全部
异常没有被捕捉。加个try块,捕捉ClientProtocolException就好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惜丨飞羽
2018-09-21
知道答主
回答量:1
采纳率:0%
帮助的人:827
展开全部
下载一个httpcore的包,就能解决问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝眯眯
2015-04-22 · TA获得超过457个赞
知道小有建树答主
回答量:513
采纳率:33%
帮助的人:170万
展开全部
这种编译错误,IDE都会自动修正的,自己找一下。
追问
并没有修正。。只给出了上图的提示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式