@@ -193,11 +193,17 @@ public RestClient(string baseUrl) : this()
193
193
public IList < Parameter > DefaultParameters { get ; }
194
194
195
195
/// <summary>
196
- /// Explicit Host header value to use in requests independent from the request URI.
197
- /// If null, default host value extracted from URI is used.
196
+ /// Explicit Host header value to use in requests independent from the request URI.
197
+ /// If null, default host value extracted from URI is used.
198
198
/// </summary>
199
199
public string BaseHost { get ; set ; }
200
200
201
+ /// <summary>
202
+ /// Set to true if you need to add multiple default parameters with the same name.
203
+ /// Only query and form parameters are supported.
204
+ /// </summary>
205
+ public bool AllowMultipleDefaultParametersWithSameName { get ; set ; } = false ;
206
+
201
207
/// <summary>
202
208
/// Registers a content handler to process response content
203
209
/// </summary>
@@ -362,6 +368,9 @@ private static string EncodeParameter(Parameter parameter, Encoding encoding) =>
362
368
: string . Concat ( parameter . Name . UrlEncode ( encoding ) , "=" ,
363
369
parameter . Value . ToString ( ) . UrlEncode ( encoding ) ) ;
364
370
371
+ private static readonly ParameterType [ ] MultiParameterTypes =
372
+ { ParameterType . QueryString , ParameterType . GetOrPost } ;
373
+
365
374
private void ConfigureHttp ( IRestRequest request , IHttp http )
366
375
{
367
376
http . Encoding = Encoding ;
@@ -374,7 +383,15 @@ private void ConfigureHttp(IRestRequest request, IHttp http)
374
383
// move RestClient.DefaultParameters into Request.Parameters
375
384
foreach ( var p in DefaultParameters )
376
385
{
377
- if ( request . Parameters . Any ( p2 => p2 . Name == p . Name && p2 . Type == p . Type ) )
386
+ var parameterExists = request . Parameters . Any ( p2 => p2 . Name == p . Name && p2 . Type == p . Type ) ;
387
+
388
+ if ( AllowMultipleDefaultParametersWithSameName )
389
+ {
390
+ var isMultiParameter = MultiParameterTypes . Any ( pt => pt == p . Type ) ;
391
+ parameterExists = ! isMultiParameter && parameterExists ;
392
+ }
393
+
394
+ if ( parameterExists )
378
395
continue ;
379
396
380
397
request . AddParameter ( p ) ;
@@ -423,7 +440,7 @@ private void ConfigureHttp(IRestRequest request, IHttp http)
423
440
424
441
if ( request . Credentials != null )
425
442
http . Credentials = request . Credentials ;
426
-
443
+
427
444
if ( ! string . IsNullOrEmpty ( ConnectionGroupName ) )
428
445
http . ConnectionGroupName = ConnectionGroupName ;
429
446
@@ -499,10 +516,10 @@ private void ConfigureHttp(IRestRequest request, IHttp http)
499
516
}
500
517
501
518
http . Proxy = Proxy ?? HttpWebRequest . GetSystemWebProxy ( ) ;
502
-
519
+
503
520
var _ = WebRequest . DefaultWebProxy ;
504
521
WebRequest . DefaultWebProxy = http . Proxy ;
505
-
522
+
506
523
http . RemoteCertificateValidationCallback = RemoteCertificateValidationCallback ;
507
524
}
508
525
0 commit comments