java 中,有时需要使用HttpURLConnection 模拟浏览器发送http请求,那么如何获取HttpURLConnection 中的响应体呢?
private static byte[] connection(HttpURLConnection huc, byte[] sendBytes, String mode) throws Exception { if (mode.equalsIgnoreCase("POST") && sendBytes != null) { huc.getOutputStream().write(sendBytes); huc.getOutputStream().flush(); huc.getOutputStream().close(); } int resCode = huc.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { int contentLength = huc.getContentLength(); if (contentLength > 0) { // System.out.println("httputil,contentLength:"+contentLength); // return readData(huc); return readDataFromLength(huc, contentLength); } else { return readData(huc); } } return null; } private static byte[] readData(HttpURLConnection huc) throws Exception { InputStream in = huc.getInputStream(); return FileUtils.readBytes(in); } private static byte[] readDataFromLength(HttpURLConnection huc, int contentLength) throws Exception { InputStream in = huc.getInputStream(); BufferedInputStream bis = new BufferedInputStream(in); // 数据字节数组 byte[] receData = new byte[contentLength]; int readLength = 0; // 数据数组偏移量 int offset = 0; readLength = bis.read(receData, offset, contentLength); // 已读取的长度 int readAlreadyLength = readLength; while (readAlreadyLength < contentLength) { readLength = bis.read(receData, readAlreadyLength, contentLength-readAlreadyLength); readAlreadyLength = readAlreadyLength + readLength; } return receData; }
相关推荐
- **获取 HttpURLConnection 响应体内容**:这部分讲解了如何从 HttpURLConnection 中读取 HTTP 响应数据。 - **Java 如何读取 src 根目录下的属性文件**:这部分介绍了如何在 Java 项目中读取位于 src 目录下的属性...
综上所述,使用HttpURLConnection获取JSON数据主要包括建立HTTP连接、发送请求、接收响应、解析JSON数据,以及通过Handler在子线程和主线程间传递数据。在实际应用中,还需要考虑错误处理、网络状态检测等细节,确保...
5. 读取响应:如响应码、响应头和响应体数据。 6. 关闭连接:使用完毕后记得关闭连接,释放资源。 在`AsyncTask`中,`doInBackground()`方法就是执行网络请求的地方。你可以先创建`HttpURLConnection`对象,然后...
HttpURLConnection可以模拟浏览器的行为,向服务器发送请求,并获取服务器的响应。 二、JAVA通过HttpURLConnection上传文件的方法 下面是一个使用HttpURLConnection上传文件的示例代码: ```java public class ...
- 创建连接:首先,我们需要通过URL对象的openConnection()方法获取HttpURLConnection实例。例如: ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url...
此外,`HttpURLConnection`还提供了其他有用的方法,如`getResponseCode()`获取HTTP状态码,`getContentType()`获取Content-Type头的值,`getContentLength()`获取响应体的长度等。 为了使代码更具鲁棒性,我们应当...
这通常涉及到设置适当的响应头,如`Accept-Encoding`,并使用`InputStream`读取响应体: ```java connection.connect(); // 必须先调用connect()才能读取响应 BufferedReader reader = new BufferedReader(new ...
在这个例子中,我们创建了一个`URL`对象,然后通过`openConnection()`方法获取到`HttpURLConnection`实例。设置了请求方法为GET,并设定了连接和读取超时时间。如果请求成功,我们可以从`connection.getInputStream...
完成请求后,我们可以从`HttpURLConnection`获取响应码和响应体。响应码通常在200-300之间表示成功,其他则表示错误: ```java int responseCode = connection.getResponseCode(); if (responseCode == ...
这个实例主要关注如何使用`HttpURLConnection`来获取JSON格式的数据,这是一个常见的任务,特别是在移动应用或者Web服务客户端中。让我们深入探讨这个话题。 首先,`HttpURLConnection`是更现代、更高效的选择,...
- `openConnection()`: 这个方法用于获取到HTTPURLConnection实例。 - `setRequestMethod()`: 设置HTTP请求的方法,如GET、POST等。 - `setConnectTimeout()`: 设置连接超时时间。 - `setReadTimeout()`: 设置读取...
7. 获取响应体,通常通过`InputStream`读取响应内容并转化为字符串。 8. 封装结果到`HttpResponse`对象并返回。 `HttpResponse`是一个简单的数据载体,用于存储HTTP响应的相关信息,如响应码、响应头和响应体。在...
在发送请求后,可以通过`HttpURLConnection`的一些方法来获取响应信息,例如: - `getResponseCode()`:获取HTTP响应状态码,如200表示成功。 - `getResponseMessage()`:获取响应状态的描述。 - `getInputStream()...
然后,我们可以创建一个HttpURLConnection实例,打开连接并读取响应: ```java URL url = new URL("http://api.example.com/data?key=value"); HttpURLConnection conn = (HttpURLConnection) url.open...
默认情况下,`HttpURLConnection`没有设置超时,如果网络出现问题,程序可能会无限制地等待响应,导致程序阻塞。我们需要分别设置连接超时(connectTimeout)和读取超时(readTimeout),确保在一定时间内未得到响应...
在Java编程中,HTTPURLConnection是Java标准库提供的一种用于处理HTTP连接的类,它允许我们发送HTTP请求并接收响应。然而,HTTP协议本身是无状态的,这意味着每次请求都是独立的,不会记住之前的交互,这对于需要...
* 处理服务器的响应码和响应体 下面是一个使用HttpURLConnection发送GET请求的示例代码: ```java URL url = new URL("https://www.baidu.com"); HttpURLConnection connection = (HttpURLConnection) url.open...
6. **读取响应**:通过`getInputStream()`获取服务器响应的输入流,读取数据。 7. **关闭连接**:最后别忘了调用`disconnect()`释放资源。 在封装HttpUrlConnection时,我们需要考虑以下几个方面: 1. **异步处理*...
6. **读取响应**:如果需要读取响应体,可以打开输入流: ```java InputStream is = connection.getInputStream(); // 读取响应数据... is.close(); ``` 7. **连接和读取超时**:你可以设置连接超时和读取超时...
这个例子展示了如何创建一个HttpURLConnection对象,设置请求方法,获取响应码,读取响应内容,并最终关闭连接。值得注意的是,HttpURLConnection默认是异步的,但可以通过调用`setDoInput(true)`和`setDoOutput...