http请求 获取返回流的字节

    //模拟http请求
                    String requesturl="http://"+request.getServerName()+":"+request.getServerPort()+src;

                    HttpResponse response = null;
                    HttpGet httpGet_login = new HttpGet(requesturl);
                    try {
                        HttpClient httpClient = HttpClients.createDefault(); //
                        response = httpClient.execute(httpGet_login);
                        if (response.getStatusLine().getStatusCode() == 200) {
                            // 接口返回的json格式数据
                            ByteArrayOutputStream bos = new ByteArrayOutputStream();
                             response.getEntity().writeTo(bos);
                            // bos.toByteArray() 返回byte[]

                 Image img = Image.getInstance(bos.toByteArray());
                             wordUtils.insertImgByBase64(img, Element.ALIGN_LEFT, 100, 100, 100, 100, 100, Image.DEFAULT);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java 获取 HTTP 请求的报文体可以通过 Servlet 中的 request 对象来实现。 在 Servlet 中,我们可以通过 HttpServletRequest 对象的 getInputStream() 和 getReader() 方法来获取 HTTP 请求的报文体。 getInputStream() 方法返回一个 ServletInputStream 对象,可以使用该对象的 read(byte[] b) 方法来读取报文体的内容,返回读取的字节数。下面是一个示例代码: ``` InputStream inputStream = request.getInputStream(); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 处理读取的字节数据 } inputStream.close(); ``` getReader() 方法返回一个 BufferedReader 对象,可以使用该对象的 readLine() 方法来按行读取报文体的内容,返回读取的字符串。下面是一个示例代码: ``` BufferedReader reader = request.getReader(); String line; while ((line = reader.readLine()) != null) { // 处理读取的字符串数据 } reader.close(); ``` 需要注意的是,通过这两种方法获取的报文体内容是原始的字节或字符串数据,如果是 JSON 格式的报文体,可以使用 JSON 解析库来解析和操作。 以上就是使用 Java 获取 HTTP 请求的报文体的方法。希望对你有帮助! ### 回答2: 在Java中,可以通过使用HttpURLConnection或者HttpClient这两个类来获取HTTP请求的报文体。 使用HttpURLConnection类获取报文体的步骤如下: 1. 创建一个URL对象,通过传入要请求的URL地址。 2. 调用URL对象的openConnection方法,创建一个URLConnection对象。 3. 将URLConnection对象强制类型转换为HttpURLConnection对象,以便于调用HttpURLConnection特定的方法。 4. 调用HttpURLConnection对象的setRequestMethod方法,设置请求方法为GET或POST等。 5. 调用HttpURLConnection对象的getResponseCode方法,获取响应码,判断请求是否成功。 6. 若成功,可以通过调用HttpURLConnection对象的getInputStream方法获取输入。 7. 调用输入的相关方法,例如read方法,可以获取报文体的内容。 示例代码如下: ``` URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { stringBuilder.append(line); } String responseBody = stringBuilder.toString(); System.out.println(responseBody); reader.close(); inputStream.close(); } ``` 使用HttpClient类获取报文体的步骤如下: 1. 创建一个CloseableHttpClient对象。 2. 创建一个HttpGet或HttpPost对象,传入要请求的URL地址。 3. 调用CloseableHttpClient对象的execute方法,执行请求,并获取CloseableHttpResponse对象。 4. 调用CloseableHttpResponse对象的getStatusLine方法,获取响应的状态行。 5. 判断状态行的状态码,若为200表示请求成功。 6. 若成功,可以通过调用CloseableHttpResponse对象的getEntity方法获取响应实体。 7. 调用响应实体的getContent方法,获取输入。 8. 调用输入的相关方法,例如read方法,可以获取报文体的内容。 示例代码如下: ``` CloseableHttpClient client = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://example.com"); CloseableHttpResponse response = client.execute(httpGet); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = response.getEntity(); InputStream inputStream = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { stringBuilder.append(line); } String responseBody = stringBuilder.toString(); System.out.println(responseBody); reader.close(); inputStream.close(); } response.close(); client.close(); ``` 以上是两种常用的获取HTTP请求报文体的方法。根据具体的需求和使用场景,可以选择合适的方法来获取报文体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值