Skip to content

Commit 5f2ae27

Browse files
committed
Charset and NoBodyContent bugfixes
1 parent eee0613 commit 5f2ae27

File tree

5 files changed

+66
-7
lines changed

5 files changed

+66
-7
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
The format is based on [Keep a Changelog](http://keepachangelog.com/)
33
and this project adheres to [Semantic Versioning](http://semver.org/).
44

5+
## 0.1.1 Bugfix Release
6+
- Request Parameters/Body now uses UTF-8 Charset encoding
7+
- NoBodyContent now properly sends no request body.
8+
59
## 0.1.0 Initial Release
610

711
Initial release.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.sourcelab.http</groupId>
88
<artifactId>http-client-wrapper</artifactId>
9-
<version>0.1.0</version>
9+
<version>0.1.1</version>
1010
<packaging>jar</packaging>
1111

1212
<!-- Require Maven 3.3.9 -->

src/main/java/org/sourcelab/http/rest/HttpClientRestClient.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import org.sourcelab.http.rest.request.Request;
5858
import org.sourcelab.http.rest.request.RequestMethod;
5959
import org.sourcelab.http.rest.request.RequestParameter;
60+
import org.sourcelab.http.rest.request.body.NoBodyContent;
6061
import org.sourcelab.http.rest.request.body.RequestBodyContent;
6162
import org.sourcelab.http.rest.request.body.UrlEncodedFormBodyContent;
6263

@@ -435,11 +436,15 @@ private HttpEntity buildEntity(final RequestBodyContent requestBodyContent, fina
435436

436437
// Attach submitRequest params
437438
requestParameters
438-
.forEach(parameter -> params.add(new BasicNameValuePair(parameter.getName(), parameter.getValue()))
439-
);
440-
return new UrlEncodedFormEntity(params);
439+
.forEach(parameter -> params.add(new BasicNameValuePair(parameter.getName(), parameter.getValue()))
440+
);
441+
return new UrlEncodedFormEntity(params, StandardCharsets.UTF_8);
442+
} else if ( requestBodyContent instanceof NoBodyContent) {
443+
return null;
441444
} else {
442-
return new StringEntity(requestBodyContent.toString());
445+
return new StringEntity(
446+
requestBodyContent.toString(), StandardCharsets.UTF_8
447+
);
443448
}
444449
}
445450

src/main/java/org/sourcelab/http/rest/request/body/NoBodyContent.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,14 @@
2020
/**
2121
* Submit no request body.
2222
*/
23-
public class NoBodyContent extends StringBodyContent {
23+
public class NoBodyContent implements RequestBodyContent {
24+
public static final RequestBodyContent INSTANCE = new NoBodyContent();
25+
2426
public NoBodyContent() {
25-
super(null);
27+
}
28+
29+
@Override
30+
public String toString() {
31+
return null;
2632
}
2733
}

src/test/java/org/sourcelab/http/rest/HttpClientRestClientTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@
2121
import org.junit.jupiter.api.Test;
2222
import org.sourcelab.http.rest.configuration.BasicConfiguration;
2323
import org.sourcelab.http.rest.configuration.Configuration;
24+
import org.sourcelab.http.rest.request.PostRequest;
2425
import org.sourcelab.http.rest.request.Request;
2526
import org.sourcelab.http.rest.request.RequestMethod;
27+
import org.sourcelab.http.rest.request.body.NoBodyContent;
2628
import org.sourcelab.http.rest.request.body.RequestBodyContent;
2729
import org.sourcelab.http.rest.request.body.StringBodyContent;
2830
import testserver.TestHttpServer;
2931

3032
import java.io.File;
33+
import java.io.IOException;
3134

3235
import static org.junit.jupiter.api.Assertions.assertEquals;
3336

@@ -151,6 +154,47 @@ public void doHttps_withClientValidation_withCertificateValidation_Test() throws
151154
}
152155
}
153156

157+
/**
158+
* Test sending a nobody content request.
159+
*/
160+
@Test
161+
public void testPostWithNoBodyContent() throws Exception {
162+
163+
try (final TestHttpServer httpServer = new TestHttpServer()
164+
.withHttp(HTTP_PORT)
165+
.withMockData(RESPONSE_DATA)
166+
.start()
167+
) {
168+
169+
// Create client
170+
final Configuration configuration = new BasicConfiguration("http://localhost:" + HTTP_PORT);
171+
final HttpClientRestClient restClient = new HttpClientRestClient();
172+
restClient.init(configuration);
173+
174+
// Make request
175+
final Request<String> request = new PostRequest<String>() {
176+
@Override
177+
public String getApiEndpoint() {
178+
return "/my/endpoint";
179+
}
180+
181+
@Override
182+
public RequestBodyContent getRequestBody() {
183+
return NoBodyContent.INSTANCE;
184+
}
185+
186+
@Override
187+
public String parseResponse(final String responseStr) throws IOException {
188+
return responseStr;
189+
}
190+
};
191+
final RestResponse result = restClient.submitRequest(request);
192+
193+
// Validate response.
194+
assertEquals(RESPONSE_DATA, result.getResponseStr());
195+
}
196+
}
197+
154198
/**
155199
* Represents a dummy request.
156200
*/

0 commit comments

Comments
 (0)