File tree Expand file tree Collapse file tree
main/java/org/apache/hc/client5/http/impl
test/java/org/apache/hc/client5/http/impl/classic Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -219,12 +219,15 @@ protected <T> Future<T> doExecute(
219219 setupContext (clientContext );
220220
221221 final HttpHost resolvedTarget = target != null ? target : RoutingSupport .determineHost (request );
222- if (request .getScheme () == null ) {
223- request .setScheme (resolvedTarget .getSchemeName ());
224- }
225- if (request .getAuthority () == null ) {
226- request .setAuthority (new URIAuthority (resolvedTarget ));
222+ if (resolvedTarget != null ) {
223+ if (request .getScheme () == null ) {
224+ request .setScheme (resolvedTarget .getSchemeName ());
225+ }
226+ if (request .getAuthority () == null ) {
227+ request .setAuthority (new URIAuthority (resolvedTarget ));
228+ }
227229 }
230+
228231 final HttpRoute route = determineRoute (
229232 resolvedTarget ,
230233 request ,
Original file line number Diff line number Diff line change @@ -161,11 +161,13 @@ protected CloseableHttpResponse doExecute(
161161 setupContext (localcontext );
162162
163163 final HttpHost resolvedTarget = target != null ? target : RoutingSupport .determineHost (request );
164- if (request .getScheme () == null ) {
165- request .setScheme (resolvedTarget .getSchemeName ());
166- }
167- if (request .getAuthority () == null ) {
168- request .setAuthority (new URIAuthority (resolvedTarget ));
164+ if (resolvedTarget != null ) {
165+ if (request .getScheme () == null ) {
166+ request .setScheme (resolvedTarget .getSchemeName ());
167+ }
168+ if (request .getAuthority () == null ) {
169+ request .setAuthority (new URIAuthority (resolvedTarget ));
170+ }
169171 }
170172 final HttpRoute route = determineRoute (
171173 resolvedTarget ,
Original file line number Diff line number Diff line change 4242import org .apache .hc .client5 .http .io .HttpClientConnectionManager ;
4343import org .apache .hc .client5 .http .protocol .HttpClientContext ;
4444import org .apache .hc .client5 .http .routing .HttpRoutePlanner ;
45+ import org .apache .hc .core5 .http .ClassicHttpRequest ;
4546import org .apache .hc .core5 .http .HttpException ;
4647import org .apache .hc .core5 .http .HttpHost ;
4748import org .apache .hc .core5 .http .config .Lookup ;
4849import org .apache .hc .core5 .http .impl .io .HttpRequestExecutor ;
50+ import org .apache .hc .core5 .http .io .support .ClassicRequestBuilder ;
4951import org .apache .hc .core5 .http .message .BasicClassicHttpResponse ;
5052import org .junit .jupiter .api .Assertions ;
5153import org .junit .jupiter .api .BeforeEach ;
@@ -233,4 +235,11 @@ void testClientCloseIOException() throws Exception {
233235 Mockito .verify (closeable2 ).close ();
234236 }
235237
238+ @ Test
239+ void testDoExecuteThrowsWhenNoTargetOrHost () {
240+ final ClassicHttpRequest request = ClassicRequestBuilder .get ("/foo" ).build ();
241+ final HttpClientContext context = HttpClientContext .create ();
242+ Assertions .assertThrows (NullPointerException .class , () ->
243+ client .execute (null , request , context ));
244+ }
236245}
You can’t perform that action at this time.
0 commit comments