@@ -221,19 +221,39 @@ protected virtual void OnSendingRemoteHttpRequest(SendingRemoteHttpRequestEventA
221
221
this . SendingRemoteHttpRequest ? . Invoke ( this , eventArgs ) ;
222
222
}
223
223
224
- private HttpClient CreateHttpClient ( )
224
+ /// <summary>
225
+ /// Creates an instance of <see cref="HttpClientHandler"/> as underlying handler,
226
+ /// used by <see cref="CreateHttpClient"/>. Invoked only once when required.
227
+ /// </summary>
228
+ /// <returns>An instance of <see cref="HttpClientHandler"/>.</returns>
229
+ protected virtual HttpClientHandler CreateHttpClientHandler ( )
225
230
{
226
- HttpClientHandler httpClientHandler = new HttpClientHandler ( ) ;
231
+ HttpClientHandler httpClientHandler = new ( ) ;
232
+
227
233
string userInfo = this . remoteServerUri . UserInfo ;
228
- if ( ! string . IsNullOrEmpty ( userInfo ) && userInfo . Contains ( ":" ) )
234
+
235
+ if ( ! string . IsNullOrEmpty ( userInfo ) && userInfo . Contains ( ':' ) )
229
236
{
230
- string [ ] userInfoComponents = this . remoteServerUri . UserInfo . Split ( new char [ ] { ':' } , 2 ) ;
237
+ string [ ] userInfoComponents = this . remoteServerUri . UserInfo . Split ( [ ':' ] , 2 ) ;
231
238
httpClientHandler . Credentials = new NetworkCredential ( userInfoComponents [ 0 ] , userInfoComponents [ 1 ] ) ;
232
239
httpClientHandler . PreAuthenticate = true ;
233
240
}
234
241
235
242
httpClientHandler . Proxy = this . Proxy ;
236
243
244
+ return httpClientHandler ;
245
+ }
246
+
247
+ /// <summary>
248
+ /// Creates an instance of <see cref="HttpClient"/> used by making all HTTP calls to remote end.
249
+ /// Invoked only once when required.
250
+ /// </summary>
251
+ /// <returns>An instance of <see cref="HttpClient"/>.</returns>
252
+ protected virtual HttpClient CreateHttpClient ( )
253
+ {
254
+ var httpClientHandler = CreateHttpClientHandler ( )
255
+ ?? throw new InvalidOperationException ( $ "{ nameof ( CreateHttpClientHandler ) } method returned null") ;
256
+
237
257
HttpMessageHandler handler = httpClientHandler ;
238
258
239
259
if ( _logger . IsEnabled ( LogEventLevel . Trace ) )
@@ -242,15 +262,18 @@ private HttpClient CreateHttpClient()
242
262
}
243
263
244
264
var client = new HttpClient ( handler ) ;
265
+
245
266
client . DefaultRequestHeaders . UserAgent . ParseAdd ( this . UserAgent ) ;
246
267
client . DefaultRequestHeaders . Accept . ParseAdd ( RequestAcceptHeader ) ;
247
268
client . DefaultRequestHeaders . ExpectContinue = false ;
269
+
248
270
if ( ! this . IsKeepAliveEnabled )
249
271
{
250
272
client . DefaultRequestHeaders . Connection . ParseAdd ( "close" ) ;
251
273
}
252
274
253
275
client . Timeout = this . serverResponseTimeout ;
276
+
254
277
return client ;
255
278
}
256
279
0 commit comments