I suggest looking in the direction of HttpClient .
You also did not specify the received ContentType , so I suggest using json and serializing the object being sent using Newtonsoft.JSON :
As a result, you can send a request and receive a response like this:
public async Task<WebApiResponse> PostAsync(string address, object data) { try { using (var httpClient = new HttpClient()) { var dataString = JsonConvert.SerializeObject(data); var httpContent = new StringContent(dataString, Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync(address, httpContent); var responseDataString = await response.Content.ReadAsStringAsync(); var webApiResponse = new WebApiResponse(response.StatusCode, responseDataString); return webApiResponse; } } catch (HttpRequestException ex) { const HttpStatusCode errorStatusCode = (HttpStatusCode)599; var webApiResponse = new WebApiResponse(errorStatusCode, ex.Message); return webApiResponse; } }
where WebApiResponse is a class that contains the received answer:
public class WebApiResponse { public bool IsSuccessful => (int)StatusCode >= 200 && (int)StatusCode <= 399; public HttpStatusCode StatusCode { get; } public string ResponseDataString { get; } public WebApiResponse(HttpStatusCode statusCode, string responseDataString) { StatusCode = statusCode; ResponseDataString = responseDataString; } }