public async Task <T> PostXmlObjectAsync <T>(string url, IDictionary <string, string> values, Encoding encoding) where T : class { if (string.IsNullOrWhiteSpace(url)) { throw new ArgumentNullException(nameof(url)); } if (values == null) { throw new ArgumentNullException(nameof(values)); } using (var client = new HttpClient()) using (HttpContent content = new WeakFormUrlEncodedContent(values, encoding)) { client.AddCorsHeader().AddAcceptXmlHeader(); if (this.BaseAddressUri != null) { client.BaseAddress = this.BaseAddressUri; } var response = await client.PostAsync(url, content); var stream = await response.Content.ReadAsStreamAsync(); var serializer = new XmlSerializer(typeof(T)); return((T)serializer.Deserialize(stream)); } }
public async Task <string> PostAsync(string url, IDictionary <string, string> values, Encoding encoding) { if (string.IsNullOrWhiteSpace(url)) { throw new ArgumentNullException(nameof(url)); } if (values == null) { throw new ArgumentNullException(nameof(values)); } using (var client = new HttpClient()) using (HttpContent content = new WeakFormUrlEncodedContent(values, encoding)) { client.AddCorsHeader(); if (this.BaseAddressUri != null) { client.BaseAddress = this.BaseAddressUri; } var response = await client.PostAsync(url, content); return(await response.Content.ReadAsStringAsync()); } }
private static byte[] GetContentByteArray(IEnumerable <KeyValuePair <string, string> > nameValueCollection, Encoding encoding) { if (nameValueCollection == null) { throw new ArgumentNullException(nameof(nameValueCollection)); } StringBuilder stringBuilder = new StringBuilder(); foreach (KeyValuePair <string, string> current in nameValueCollection) { if (stringBuilder.Length > 0) { stringBuilder.Append('&'); } stringBuilder.Append(WeakFormUrlEncodedContent.Encode(current.Key)); stringBuilder.Append('='); stringBuilder.Append(WeakFormUrlEncodedContent.Encode(current.Value)); } return(encoding.GetBytes(stringBuilder.ToString())); }
public WeakFormUrlEncodedContent(IEnumerable <KeyValuePair <string, string> > nameValueCollection, Encoding encoding) : base(WeakFormUrlEncodedContent.GetContentByteArray(nameValueCollection, encoding)) { this.Headers.ContentType = new MediaTypeHeaderValue(ContentTypes.UrlEncoded); }