Skip to content

Instantly share code, notes, and snippets.

@avenet
Last active August 29, 2015 14:02
Show Gist options
  • Save avenet/167536936715a7212b9f to your computer and use it in GitHub Desktop.
Save avenet/167536936715a7212b9f to your computer and use it in GitHub Desktop.
Uses the HttpClient library for .NET
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Http;
using System.IO;
using System.Net;
using System.Net.Http.Headers;
namespace Avenet.Utils
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetFile());
}
private static HttpClient CreateHttpClient(string server)
{
var cookies = new CookieContainer();
var proxy = new WebProxy("proxy_url:proxy_port", false, new string[] { });
var handler = new HttpClientHandler
{
CookieContainer = cookies,
UseCookies = true,
UseDefaultCredentials = false,
Proxy = proxy,
UseProxy = true,
};
var client = new HttpClient()
{
BaseAddress = new Uri(server),
};
var username = "username";
var password = "password";
var encoded = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("ContentType", "application/xml");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + encoded);
return client;
}
static string GetFile()
{
var client = CreateHttpClient("target_site");
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
var requestContent = new StringContent("content");
var postRequest = client.PostAsync(
"",
requestContent);
HttpResponseMessage response = postRequest.Result;
var responseContent = response.Content;
if (response.StatusCode == HttpStatusCode.OK)
{
var result = client.GetStringAsync("target-site/full_path");
var fileString = result.Result;
return fileString;
}
return null;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment