protected virtual IRequest ConstructRequest(Uri uri, string method, Dictionary <string, object> parameters, bool signed) { if (parameters == null) { parameters = new Dictionary <string, object>(); } var uriString = uri.ToString(); if (authProvider != null) { parameters = authProvider.AddAuthenticationToParameters(uriString, method, parameters, signed); } if ((method == "GET" || method == "DELETE" || ((method == "POST" || method == "PUT") && postParametersPosition == PostParameters.InUri)) && parameters?.Any() == true) { uriString += parameters.CreateParamString(); } var request = RequestFactory.Create(uriString); request.ContentType = requestBodyFormat == RequestBodyFormat.Json ? "application/json": "application/x-www-form-urlencoded"; request.Accept = "application/json"; request.Method = method; var headers = new Dictionary <string, string>(); if (authProvider != null) { headers = authProvider.AddAuthenticationToHeaders(uriString, method, parameters, signed); } foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } if ((method == "POST" || method == "PUT") && postParametersPosition != PostParameters.InUri) { if (parameters?.Any() == true) { WriteParamBody(request, parameters); } else { WriteParamBody(request, "{}"); } } return(request); }