解决方案 »

  1.   

    http://203.208.46.212/#lr=lang_zh-CN%7Clang_zh-TW&newwindow=1&q=.net+httpwebrequest&tbs=lr:lang_1zh-CN%7Clang_1zh-TW
      

  2.   

    参考HttpWebRequest类
    http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.aspx
      

  3.   

    可以参考下面的代码,但是我想你还需要先登录获取已登录凭证,有些网站会把相应的cooki设置成HttpOnly,这时候CookieContainer获取不到,需要另外处理取得。
    另外你可以考虑使用其他人开发的类,比如
    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);
      

  4.   

    你是想要自己按HTTP协议发包还是用现成的类发起一次HTTP访问?
    如果想要了解HTTP的协议,可以参考:Http协议详解,如果只是想造一次HTTP请求,可以使用楼上save4me的方法,当然也可以也可以参考C#客户端向HTTP服务器提交POST数据,这个可以更加深层的了解HTTP协议。