wrapper for a web request call
Name the method SendAsync since it is meant to be used asynchronously. Since this is in a web app, all awaited calls should chain to .ConfigureAwait(false). Also, since you're async, use await writer.WriteAsync rather than writer.Write. A few more Streams need to be wrapped in using statements. Don't swallow exceptions -- Logging them is all right. Method does not seem to access any instance data, so it could be static and therefore the class it is in can be as well. Here is a rewrite:

    public static async Task SendAsync()
    {
        var request = WebRequest.Create("url") as HttpWebRequest;

        if (request == null)
        {
            return;
        }

        request.Method = "POST";
        request.ContentType = "application/json; charset=utf-8";

        request.Headers["authorization"] = "token";

        var byteArray = Encoding.UTF8.GetBytes("{"
                                                  + "\"app_id\": \"appId\","
                                                  + "\"extra_parameter\": \"value\"}");

        string responseContent = null;

        try
        {
            using (var writer = await request.GetRequestStreamAsync().ConfigureAwait(false))
            {
                await writer.WriteAsync(byteArray, 0, byteArray.Length).ConfigureAwait(false);
            }

            using (var response = await request.GetResponseAsync().ConfigureAwait(false) as HttpWebResponse)
            {
                if (response != null)
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        if (responseStream != null)
                        {
                            using (var reader = new StreamReader(responseStream))
                            {
                                responseContent = await reader.ReadToEndAsync().ConfigureAwait(false);
                            }
                        }
                    }
                }
            }
        }
        catch (WebException ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.Message);
            if (ex.Response != null)
            {
                using (var responseStream = ex.Response.GetResponseStream())
                {
                    if (responseStream != null)
                    {
                        using (var reader = new StreamReader(responseStream))
                        {
                            System.Diagnostics.Debug.WriteLine(await reader.ReadToEndAsync().ConfigureAwait(false));
                        }
                    }
                }
            }

            throw;
        }

        System.Diagnostics.Debug.WriteLine(responseContent ?? string.Empty);
    }