Here is a method I use for creating POST requests: 
 private static HttpWebRequest createNewPostRequest(string apikey, string secretkey, string endpoint)
 {
    HttpWebRequest request = WebRequest.Create(endpoint) as HttpWebRequest;
    request.Proxy = null;
    request.Method = "POST";
    //Specify the xml/Json content types that are acceptable. 
    request.ContentType = "application/xml";
    request.Accept = "application/xml";
    //Attach authorization information
    request.Headers.Add("Authorization", apikey);
    request.Headers.Add("Secretkey", secretkey);
    return request;
 }
Within my main method I call it like this: 
HttpWebRequest request = createNewPostRequest(apikey, secretkey, endpoint);
and I then pass my data to the method like this: 
string requestBody = SerializeToString(requestObj);
byte[] byteStr = Encoding.UTF8.GetBytes(requestBody);
request.ContentLength = byteStr.Length;
using (Stream stream = request.GetRequestStream())
{
    stream.Write(byteStr, 0, byteStr.Length);
}
//Parse the response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    //Business error
    if (response.StatusCode != HttpStatusCode.OK)
    {
        Console.WriteLine(string.Format("Error: response status code is{0}, at time:{1}", response.StatusCode, DateTime.Now.ToString()));
        return "error";
    }
    else if (response.StatusCode == HttpStatusCode.OK)//Success
    {
        using (Stream respStream = response.GetResponseStream())
        {
            XmlSerializer serializer = new XmlSerializer(typeof(SubmitReportResponse));
            reportReq = serializer.Deserialize(respStream) as SubmitReportResponse;
        }
     }
...
In my case I serialize/deserialize my body from a class - you will need to alter this to use your text file. If you want an easy drop in solution, then change the SerializetoString method to a method that loads your text file to a string.