获取响应码抛异常

在手机端获取服务器数据时,只要没访问成功,运行到conn.getResponseCode();这一行时候就出异常。

而我的需求是判断,响应码,从而提示用户联网失败,或则处理获取的数据。

  解决方案:

       1.确保获取数据是在子线程中运行的

       2.大部分出错的原因其实是在写代码的时候直接抛出异常而没有捕获异常,只要响应码不是200,那么系统会自动跑出异常导致在获取响应码那一行报错。所以只要自己吧异常捕获,就可以解决问题了

在 Java 中,可以使用 Apache HttpComponents 提供的 HttpClient 来发送 HTTP 请求和接收 HTTP 响应。当我们发送一个 HTTP 请求后,服务器会返回一个 HTTP 响应,我们可以通过 HttpResponse 类来获取响应结果信息。具体步骤如下: 1. 通过 HttpClient 发送 HTTP 请求,获取 HttpResponse 对象。 ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://www.example.com"); HttpResponse httpResponse = httpClient.execute(httpGet); ``` 2. 通过 HttpResponse 对象获取响应结果信息,包括: - 响应状态行信息(协议版本、状态和状态描述):`httpResponse.getStatusLine()` - 响应头信息:`httpResponse.getAllHeaders()` - 响应体信息:`EntityUtils.toString(httpResponse.getEntity(), "UTF-8")` ```java // 获取响应状态行信息 StatusLine statusLine = httpResponse.getStatusLine(); int statusCode = statusLine.getStatusCode(); String reasonPhrase = statusLine.getReasonPhrase(); // 获取响应头信息 Header[] headers = httpResponse.getAllHeaders(); for (Header header : headers) { String name = header.getName(); String value = header.getValue(); System.out.println(name + ": " + value); } // 获取响应体信息 String responseBody = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); ``` 注意:获取响应体信息前,需要先判断响应实体是否为空,否则会出空指针异常。 ```java HttpEntity entity = httpResponse.getEntity(); if (entity != null) { String responseBody = EntityUtils.toString(entity, "UTF-8"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值