System.Net.HttpWebRequest request;
        System.IO.Stream stream;
        System.Exception sysEx;
        
        request = System.Net.WebRequest::Create("URL") as System.Net.HttpWebRequest;
        request.Method = 'POST';
        request.ContentType = 'application/json';

        // Set the request headers
        System.Net.WebHeaderCollection headerCollection = request.Headers;
        headerCollection.Set('Name', 'Value');

        var utf8 = System.Text.Encoding::get_UTF8();


        // Set the request body
        var byteArrayPayload = utf8.GetBytes("{\"key1\":\"value1\",\"key2\":\"value2\"}");
         try
        {
            // send out the payload
            using (System.IO.Stream dataStream = request.GetRequestStream())
            {
                dataStream.Write(byteArrayPayload, 0, byteArrayPayload.Length);
            }

            // request.GetResponse() may already result in an error if the request was e.g. a Bad Request(Status Code 400). This should be handled upstream via our global error handling.
            using (System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse)
            {
                stream = response.GetResponseStream();
                System.IO.StreamReader reader = new System.IO.StreamReader(stream);
                str responseBody = reader.ReadToEnd();
            }
        }
        catch (sysEx)
        {
            throw;
        }