Align Content-Type headers with Spring Framework policies for HttpClient 5.
Some tools expect a non-blank Content-Type header from HttpEntity during execution. Resolves #1368.
This commit is contained in:
committed by
Greg L. Turnquist
parent
3ec8af7682
commit
3aaa77e08c
@@ -27,10 +27,7 @@ import java.util.Iterator;
|
||||
|
||||
import org.apache.hc.client5.http.classic.HttpClient;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpPost;
|
||||
import org.apache.hc.core5.http.ClassicHttpResponse;
|
||||
import org.apache.hc.core5.http.HttpEntity;
|
||||
import org.apache.hc.core5.http.HttpResponse;
|
||||
import org.apache.hc.core5.http.NameValuePair;
|
||||
import org.apache.hc.core5.http.*;
|
||||
import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
|
||||
import org.apache.hc.core5.http.io.entity.EntityUtils;
|
||||
import org.apache.hc.core5.http.protocol.HttpContext;
|
||||
@@ -119,8 +116,8 @@ public class HttpComponents5Connection extends AbstractHttpSenderConnection {
|
||||
|
||||
@Override
|
||||
protected void onSendAfterWrite(WebServiceMessage message) throws IOException {
|
||||
|
||||
httpPost.setEntity(new ByteArrayEntity(requestBuffer.toByteArray(), null));
|
||||
var contentType = ContentType.parse(httpPost.getFirstHeader(HttpHeaders.CONTENT_TYPE).getValue());
|
||||
httpPost.setEntity(new ByteArrayEntity(requestBuffer.toByteArray(), contentType));
|
||||
requestBuffer = null;
|
||||
|
||||
if (httpContext != null) {
|
||||
|
||||
@@ -16,21 +16,14 @@
|
||||
|
||||
package org.springframework.ws.transport.http;
|
||||
|
||||
import static org.assertj.core.api.AssertionsForClassTypes.*;
|
||||
import static org.springframework.ws.transport.http.HttpComponents5ClientFactory.*;
|
||||
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.xml.soap.MessageFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.hc.client5.http.HttpRoute;
|
||||
import org.apache.hc.client5.http.classic.ExecChainHandler;
|
||||
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
|
||||
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
|
||||
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
|
||||
import org.apache.hc.core5.http.HttpHost;
|
||||
import org.eclipse.jetty.server.Connector;
|
||||
@@ -45,12 +38,33 @@ import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
|
||||
import org.springframework.ws.transport.WebServiceConnection;
|
||||
import org.springframework.ws.transport.support.FreePortScanner;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
||||
import static org.springframework.ws.transport.http.HttpComponents5ClientFactory.getPort;
|
||||
|
||||
class HttpComponents5MessageSenderIntegrationTest
|
||||
extends AbstractHttpWebServiceMessageSenderIntegrationTestCase<HttpComponents5MessageSender> {
|
||||
|
||||
private static CloseableHttpClient createHttpClientWithAssertion() {
|
||||
ExecChainHandler handler = (request, scope, chain) -> {
|
||||
assertThat(request.getEntity().getContentType())
|
||||
.describedAs("Exec interceptors are supposed to receive content type. Verify that HttpEntity class is instantiated correctly")
|
||||
.isNotBlank();
|
||||
return chain.proceed(request, scope);
|
||||
};
|
||||
return HttpClientBuilder.create()
|
||||
.addRequestInterceptorFirst(new HttpComponents5MessageSender.RemoveSoapHeadersInterceptor())
|
||||
.addExecInterceptorFirst("logbook-alike exec interceptor", handler)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HttpComponents5MessageSender createMessageSender() {
|
||||
return new HttpComponents5MessageSender();
|
||||
return new HttpComponents5MessageSender(createHttpClientWithAssertion());
|
||||
}
|
||||
|
||||
@Test // GH-1164
|
||||
|
||||
Reference in New Issue
Block a user