Skip to content

Commit 4d7d765

Browse files
authored
[Fix][Connector-Http] fix Invalid mime type (#9363)
1 parent 877ae8c commit 4d7d765

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

seatunnel-connectors-v2/connector-http/connector-http-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/http/client/HttpClientProvider.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ private void addHeaders(HttpRequestBase request, Map<String, String> headers) {
465465
headers.forEach(request::addHeader);
466466
}
467467

468-
private void addBody(HttpEntityEnclosingRequestBase request, Map<String, Object> body)
468+
static void addBody(HttpEntityEnclosingRequestBase request, Map<String, Object> body)
469469
throws UnsupportedEncodingException {
470470
if (MapUtils.isEmpty(body)) {
471471
body = new HashMap<>();
@@ -489,10 +489,8 @@ private void addBody(HttpEntityEnclosingRequestBase request, Map<String, Object>
489489
request.setEntity(new UrlEncodedFormEntity(parameters, ENCODING));
490490
}
491491
} else {
492-
request.addHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON);
493492
StringEntity entity =
494493
new StringEntity(JsonUtils.toJsonString(body), ContentType.APPLICATION_JSON);
495-
entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON));
496494
request.setEntity(entity);
497495
}
498496
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package org.apache.seatunnel.connectors.seatunnel.http.client;
18+
19+
import org.apache.http.Header;
20+
import org.apache.http.client.methods.HttpPost;
21+
22+
import org.junit.jupiter.api.Assertions;
23+
import org.junit.jupiter.api.Test;
24+
25+
import java.util.HashMap;
26+
import java.util.Map;
27+
28+
class HttpClientProviderTest {
29+
30+
@Test
31+
void addBody() throws Exception {
32+
HttpPost post = new HttpPost("http://localhost:8080");
33+
Map<String, Object> body = new HashMap<>();
34+
Header[] originalHeaders = post.getAllHeaders();
35+
HttpClientProvider.addBody(post, body);
36+
37+
// ensure the original headers are preserved
38+
Header[] currentHeaders = post.getAllHeaders();
39+
Assertions.assertEquals(originalHeaders.length, currentHeaders.length);
40+
for (int i = 0; i < originalHeaders.length; i++) {
41+
Assertions.assertEquals(
42+
originalHeaders[i].getName(),
43+
currentHeaders[i].getName(),
44+
"Header name mismatch at index " + i);
45+
Assertions.assertEquals(
46+
originalHeaders[i].getValue(),
47+
currentHeaders[i].getValue(),
48+
"Header value mismatch at index " + i);
49+
}
50+
// ensure no manually set content type or encoding
51+
Assertions.assertNull(post.getEntity().getContentEncoding());
52+
}
53+
}

0 commit comments

Comments
 (0)