private static async Task<HttpResponseMessage> UrlRequest(string request, HttpMethod httpMethod, Dictionary<string, string> data = null, Dictionary<string, string> cookies = null, string referer = null, RequestOptions requestOptions = RequestOptions.None) { if (string.IsNullOrEmpty(request) || httpMethod == null) { return null; } HttpResponseMessage responseMessage; using (HttpRequestMessage requestMessage = new HttpRequestMessage(httpMethod, request)) { if (data != null) { try { requestMessage.Content = new FormUrlEncodedContent(data); } catch (UriFormatException e) { Logging.LogGenericException(e); return null; } } if (cookies != null && cookies.Count > 0) { StringBuilder cookieHeader = new StringBuilder(); foreach (KeyValuePair<string, string> cookie in cookies) { cookieHeader.Append(cookie.Key + "=" + cookie.Value + ";"); } requestMessage.Headers.Add("Cookie", cookieHeader.ToString()); } if (referer != null) { requestMessage.Headers.Referrer = new Uri(referer); } if (requestOptions.HasFlag(RequestOptions.FakeUserAgent)) { requestMessage.Headers.UserAgent.ParseAdd(FakeUserAgent); } if (requestOptions.HasFlag(RequestOptions.XMLHttpRequest)) { requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest"); } try { responseMessage = await HttpClient.SendAsync(requestMessage).ConfigureAwait(false); } catch { // Request failed, we don't need to know the exact reason, swallow exception return null; } } if (responseMessage == null || !responseMessage.IsSuccessStatusCode) { return null; } return responseMessage; }