---
RestSharp/RestClient.Async.cs | 4 ----
RestSharp/RestClient.Sync.cs | 4 ----
RestSharp/RestClient.cs | 7 ++++++-
RestSharp/RestClientExtensions.cs | 18 ++++++++++++++++++
4 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/RestSharp/RestClient.Async.cs b/RestSharp/RestClient.Async.cs
index 94a56fd..95acde0 100644
--- a/RestSharp/RestClient.Async.cs
+++ b/RestSharp/RestClient.Async.cs
@@ -73,10 +73,6 @@ namespace RestSharp
var http = HttpFactory.Create();
AuthenticateIfNeeded(this, request);
- // add Accept header based on registered deserializers
- var accepts = string.Join(", ", AcceptTypes.ToArray());
- this.AddDefaultParameter("Accept", accepts, ParameterType.HttpHeader);
-
ConfigureHttp(request, http);
var asyncHandle = new RestRequestAsyncHandle();
diff --git a/RestSharp/RestClient.Sync.cs b/RestSharp/RestClient.Sync.cs
index c8db267..66df054 100644
--- a/RestSharp/RestClient.Sync.cs
+++ b/RestSharp/RestClient.Sync.cs
@@ -62,10 +62,6 @@ namespace RestSharp
{
AuthenticateIfNeeded(this, request);
- // add Accept header based on registered deserializers
- var accepts = string.Join(", ", AcceptTypes.ToArray());
- this.AddDefaultParameter("Accept", accepts, ParameterType.HttpHeader);
-
IRestResponse response = new RestResponse();
try
{
diff --git a/RestSharp/RestClient.cs b/RestSharp/RestClient.cs
index 5501e63..8b0bc0d 100644
--- a/RestSharp/RestClient.cs
+++ b/RestSharp/RestClient.cs
@@ -90,6 +90,9 @@ namespace RestSharp
if (contentType != "*")
{
AcceptTypes.Add(contentType);
+ // add Accept header based on registered deserializers
+ var accepts = string.Join(", ", AcceptTypes.ToArray());
+ this.AddDefaultParameter("Accept", accepts, ParameterType.HttpHeader);
}
}
@@ -101,6 +104,7 @@ namespace RestSharp
{
ContentHandlers.Remove(contentType);
AcceptTypes.Remove(contentType);
+ this.RemoveDefaultParameter("Accept");
}
/// <summary>
@@ -109,7 +113,8 @@ namespace RestSharp
public void ClearHandlers()
{
ContentHandlers.Clear();
- AcceptTypes.Clear();
+ AcceptTypes.Clear();
+ this.RemoveDefaultParameter("Accept");
}
/// <summary>
diff --git a/RestSharp/RestClientExtensions.cs b/RestSharp/RestClientExtensions.cs
index 40ba914..4f1c3fc 100644
--- a/RestSharp/RestClientExtensions.cs
+++ b/RestSharp/RestClientExtensions.cs
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
namespace RestSharp
{
@@ -209,10 +210,27 @@ namespace RestSharp
throw new NotSupportedException(
"Cannot set request body from default headers. Use Request.AddBody() instead.");
}
+ // If parameter already exists, remove it first.
+ restClient.RemoveDefaultParameter(p.Name);
restClient.DefaultParameters.Add(p);
}
+ /// <summary>
+ /// Removes a parameter from the default parameters that are used on every request made with this client instance
+ /// </summary>
+ /// <param name="restClient">The IRestClient instance</param>
+ /// <param name="name">The name of the parameter that needs to be removed</param>
+ /// <returns></returns>
+ public static void RemoveDefaultParameter(this IRestClient restClient, string name)
+ {
+ var parameter = restClient.DefaultParameters.SingleOrDefault(p => p.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
+ if (parameter != null)
+ {
+ restClient.DefaultParameters.Remove(parameter);
+ }
+ }
+
/// <summary>
/// Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT)
/// Used on every request made by this client instance
--