1、Post请求:
private static string Post(string url, string content)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader sr = null;
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Headers.Add("Authorization", "Basic ********");
request.ContentType = "application/json;charset=UTF-8";
byte[] buffer = Encoding.UTF8.GetBytes(content);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
response = (HttpWebResponse)request.GetResponse();
sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
return sr.ReadToEnd();
}
catch (Exception ex)
{
return "Some errors has happended!";
}
finally
{
if (sr != null)
{
sr.Close();
}
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
}
}
2、Get请求:
private static string Get(string url)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader sr = null;
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.Proxy = null;
request.KeepAlive = false;
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add("Authorization", "Basic *********");
request.AutomaticDecompression = DecompressionMethods.GZip;
response = (HttpWebResponse)request.GetResponse();
sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
return sr.ReadToEnd();
}
catch (Exception ex)
{
return "Some errors has happended!";
}
finally
{
if (sr != null)
{
sr.Close();
}
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
}
}
3、上面两个方式的设置请求头的时候,需要添加身份认证,即*****号处,我们可以用类似于fiddler的抓包工具对原访问进行抓取,就能看到原访问时的Authorization认证所需要的Basic信息,来代替上图的******号即可。
4、也可以通过更简洁的C#代码的方式替代上面的第三步骤:
string ticket = Convert.ToBase64String(Encoding.UTF8.GetBytes("username:password"));
request.Headers.Add("Authorization", "Basic " + ticket);
解密的方法如下:
Encoding.UTF8.GetString(Convert.FromBase64String("加密内容"));