Skip to content

Commit 536f208

Browse files
committed
fix: close inputStream error
1 parent 021f246 commit 536f208

File tree

6 files changed

+26
-28
lines changed

6 files changed

+26
-28
lines changed

src/main/java/com/hb0730/https/support/SimpleHttpResponse.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.hb0730.https.support;
22

3-
import cn.hutool.core.io.IoUtil;
43
import lombok.AllArgsConstructor;
54
import lombok.Builder;
65
import lombok.Data;
76
import lombok.NoArgsConstructor;
87

9-
import java.io.InputStream;
108
import java.nio.charset.Charset;
119
import java.nio.charset.StandardCharsets;
1210
import java.util.List;
@@ -35,7 +33,7 @@ public class SimpleHttpResponse {
3533
/**
3634
* body stream
3735
*/
38-
private InputStream body;
36+
private byte[] body;
3937

4038
/**
4139
* 获取body,默认UTF-8编码
@@ -54,11 +52,11 @@ public String getBodyStr() {
5452
* @return body
5553
*/
5654
public String getBodyStr(Charset charset) {
57-
return IoUtil.read(this.body, charset);
55+
return new String(this.body, charset);
5856
}
5957

6058
public SimpleHttpResponse body(byte[] body) {
61-
this.body = IoUtil.toStream(body);
59+
this.body = body;
6260
return this;
6361
}
6462
}

src/main/java/com/hb0730/https/support/httpclient/HttpClientSyncImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.hb0730.https.support.httpclient;
22

3+
import cn.hutool.core.io.IoUtil;
34
import com.hb0730.https.HttpHeader;
45
import com.hb0730.https.config.HttpConfig;
56
import com.hb0730.https.constants.Constants;
@@ -130,6 +131,7 @@ public SimpleHttpResponse post(String url, String dataJson, HttpHeader header) {
130131
addHeader(uriRequest, header);
131132
return this.exec(uriRequest);
132133
}
134+
133135
@Override
134136
public SimpleHttpResponse post(String url, Map<String, String> formdata) {
135137
return post(url, formdata, null);
@@ -202,7 +204,7 @@ private SimpleHttpResponse exec(HttpUriRequest request) {
202204
, (v1Value, v2Value) -> v2Value));
203205
return SimpleHttpResponse.builder()
204206
.success(success)
205-
.body(entity.getContent()).headers(headers).build();
207+
.body(IoUtil.readBytes(entity.getContent(), false)).headers(headers).build();
206208
} catch (IOException e) {
207209
throw new HttpException("request error:" + e.getMessage());
208210
}

src/main/java/com/hb0730/https/support/hutool/HutoolAsyncImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private void response(HttpCallback httpCallback, HttpRequest request) {
7979
SimpleHttpResponse.SimpleHttpResponseBuilder body = SimpleHttpResponse.builder()
8080
.success(response.isOk())
8181
.headers(response.headers())
82-
.body(response.bodyStream());
82+
.body(response.bodyBytes());
8383
httpCallback.response(body.build());
8484
} catch (IOException e) {
8585
httpCallback.failure(e);

src/main/java/com/hb0730/https/support/hutool/HutoolSyncImpl.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,7 @@ public SimpleHttpResponse get(String url, Map<String, String> params) {
4141
}
4242
UrlBuilder builder = urlBuilder(url, params, httpConfig.getCharset(), httpConfig.isEncode());
4343
HttpRequest request = getRequest(builder, Method.GET);
44-
HttpResponse execute = request.execute();
45-
return SimpleHttpResponse.builder()
46-
.success(execute.isOk())
47-
.headers(execute.headers())
48-
.body(execute.bodyStream()).build();
44+
return this.exec(request);
4945
}
5046

5147
@Override
@@ -69,12 +65,7 @@ public SimpleHttpResponse post(String url, String dataJson, HttpHeader header) {
6965
request.addHeaders(header.getHeaders());
7066
}
7167
request.body(dataJson, getContentType(Constants.CONTENT_TYPE_JSON_UTF_8));
72-
HttpResponse execute = request.execute();
73-
return SimpleHttpResponse.builder()
74-
.success(execute.isOk())
75-
.body(execute.bodyStream())
76-
.headers(execute.headers())
77-
.build();
68+
return this.exec(request);
7869
}
7970

8071
@Override
@@ -94,12 +85,20 @@ public SimpleHttpResponse post(String url, Map<String, String> formData, HttpHea
9485
if (null != header) {
9586
request.addHeaders(header.getHeaders());
9687
}
97-
HttpResponse execute = request.execute();
98-
return SimpleHttpResponse.builder()
99-
.success(execute.isOk())
100-
.body(execute.bodyStream())
101-
.headers(execute.headers())
102-
.build();
88+
return this.exec(request);
89+
90+
}
91+
92+
private SimpleHttpResponse exec(HttpRequest request) {
93+
try (HttpResponse response = request.execute()) {
94+
return SimpleHttpResponse.builder()
95+
.success(response.isOk())
96+
.body(response.bodyBytes())
97+
.headers(response.headers())
98+
.build();
99+
} catch (Exception e) {
100+
throw new com.hb0730.https.exception.HttpException("request error:" + e.getMessage());
101+
}
103102
}
104103

105104
private HttpRequest getRequest(UrlBuilder url, Method method) {

src/main/java/com/hb0730/https/support/okhttp3/OkHttp3AsyncImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public void onResponse(Call call, Response response) throws IOException {
103103
SimpleHttpResponse httpResponse = SimpleHttpResponse.builder()
104104
.success(response.isSuccessful())
105105
.headers(response.headers().toMultimap())
106-
.body(responseBody.byteStream()).build();
106+
.body(responseBody == null ? null : responseBody.bytes()).build();
107107
httpCallback.response(httpResponse);
108108
}
109109
}

src/main/java/com/hb0730/https/support/okhttp3/OkHttp3SyncImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.hb0730.https.support.okhttp3;
22

3+
import cn.hutool.core.io.IoUtil;
34
import com.hb0730.https.HttpHeader;
45
import com.hb0730.https.config.HttpConfig;
5-
import com.hb0730.https.constants.Constants;
66
import com.hb0730.https.exception.HttpException;
77
import com.hb0730.https.inter.AbstractSyncHttp;
88
import com.hb0730.https.support.SimpleHttpResponse;
@@ -16,7 +16,6 @@
1616
import java.io.IOException;
1717
import java.io.InputStream;
1818
import java.util.Map;
19-
import java.util.Objects;
2019

2120
/**
2221
* okhttp3 sync impl
@@ -118,7 +117,7 @@ private SimpleHttpResponse exec(Request.Builder requestBuilder) {
118117
return SimpleHttpResponse.builder()
119118
.success(response.isSuccessful())
120119
.headers(response.headers().toMultimap())
121-
.body(stream).build();
120+
.body(IoUtil.readBytes(stream, false)).build();
122121
} catch (IOException e) {
123122
throw new HttpException("http execute error:" + e.getMessage(), e);
124123
}

0 commit comments

Comments
 (0)