解决方案 »
- 根据两点,获取贝塞尔曲线.
- C# udpclient send 无效地址,receive就会报错
- 鼠标单击窗体空白区域后触发事件的代码怎么写?
- 求高手解答。。。回发或回调参数无效 问题
- VS2005中winForm的treeview控件与数据库操作实现无限层级?
- 关闭sokcet的事件如何实现
- 利用api得到某应用程序中一个文本框的句柄,有什么方法让这个文本框失去焦点?
- 神奇(是我疯了,还是.net)
- WPF,3D绘图的这个功能怎么实现
- 主界面读取定时器数据时如何处理?
- WebBrowser的BeforeNavigate2事件
- 关于JsonConvert.SerializeObject找不到源码的问题,求高手帮忙看看,急
http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.aspx
另外你可以考虑使用其他人开发的类,比如
C#HttpHelper类源码
crifanLib – Crifan’s Library (C#/Python/PHP/C/…)private static CookieContainer cookieContainer;
private static WebProxy proxy;
private static string refer;
private static string UserAgent = @"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11";
public static string DownloadHtmlPage(string pageUrl, Encoding encoding, string requestMethod, int timeOut)
{
string value = string.Empty;
HttpWebResponse response = null;
Stream data = null;
StreamReader sr = null;
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(pageUrl);
request.Method = requestMethod;
request.ServicePoint.Expect100Continue = false;
//是否使用 Nagle 不使用 提高效率
request.ServicePoint.UseNagleAlgorithm = false;
//最大连接数
request.ServicePoint.ConnectionLimit = 65500;
//数据是否缓冲 false 提高效率
request.AllowWriteStreamBuffering = false;
request.UserAgent = UserAgent;
request.KeepAlive = true;
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.Headers.Add("Accept", "text/html, application/xhtml+xml, */*");
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
request.Headers.Add("Accept-Language", "zh-CN");
//自己把其他的http请求头按下面的格式加上
request.Headers.Add("DNT", "1");
request.Headers.Add("auth_key", "api%40demo.eyou.net");
request.Headers.Add("auth_timestamp", "1338975749");
request.Headers.Add("auth_signature", "65f0a3bc6117af7133c58a278251e472");
request.Headers.Add("Content-Length", "0");
if (cookieContainer != null)
{
request.CookieContainer = cookieContainer;
}
if (proxy != null)
{
request.Proxy = proxy;
}
else
{
//request.Proxy = WebRequest.DefaultWebProxy;
request.Proxy = null;
}
if (!string.IsNullOrEmpty(refer))
{
request.Referer = refer;
}
else
{
request.Referer = pageUrl;
}
if (timeOut != -1) request.Timeout = timeOut;
response = (HttpWebResponse)request.GetResponse();
cookieContainer = request.CookieContainer;
data = response.GetResponseStream();
sr = new StreamReader(data, encoding);
string str;
StringBuilder source = new StringBuilder();
while ((str = sr.ReadLine()) != null)
source.Append(str).Append("\r\n");
value = source.ToString();
}
catch (WebException e)
{
//MessageBox.Show(e.Message);
}
finally
{
if (sr != null) sr.Close();
if (data != null) data.Close();
if (response != null) response.Close();
}
return value;
}
string ret = DownloadHtmlPage("http://demo.eyou.net/api/user/[email protected]/mail/-/unread", Encoding.UTF8, "GET", -1);
如果想要了解HTTP的协议,可以参考:Http协议详解,如果只是想造一次HTTP请求,可以使用楼上save4me的方法,当然也可以也可以参考C#客户端向HTTP服务器提交POST数据,这个可以更加深层的了解HTTP协议。