<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    使用 HttpWebRequest 向網站提交數據

    Posted on 2007-03-20 16:32 dennis 閱讀(7784) 評論(4)  編輯  收藏 所屬分類: C#歷程
    HttpWebRequest?是?.net?基類庫中的一個類,在命名空間?System.Net?下面,用來使用戶通過?HTTP?協議和服務器交互。?

    HttpWebRequest?對?HTTP?協議進行了完整的封裝,對?HTTP?協議中的?Header,?Content,?Cookie?都做了屬性和方法的支持,很容易就能編寫出一個模擬瀏覽器自動登錄的程序。?

    程序使用?HTTP?協議和服務器交互主要是進行數據的提交,通常數據的提交是通過?GET?和?POST?兩種方式來完成,下面對這兩種方式進行一下說明:?

    1.?GET? 方式。?GET?方式通過在網絡地址附加參數來完成數據的提交,比如在地址?http://www.google.com/webhp?hl=zh- CN?中,前面部分?http://www.google.com/webhp?表示數據提交的網址,后面部分?hl=zh-CN?表示附加的參數,其中 ?hl?表示一個鍵(key),?zh-CN?表示這個鍵對應的值(value)。程序代碼如下:?

    HttpWebRequest?req?=?(HttpWebRequest)?HttpWebRequest.Create(?"http://www.google.com/webhp?hl=zh-CN"?);
    req.Method?
    =?"GET";
    using?(WebResponse?wr?=?req.GetResponse())
    {
    ???
    //在這里對接收到的頁面內容進行處理
    }?

    2.?POST?方式。?POST?方式通過在頁面內容中填寫參數的方法來完成數據的提交,參數的格式和?GET?方式一樣,是類似于?hl=zh-CN&newwindow=1?這樣的結構。程序代碼如下:?

    string?param?=?"hl=zh-CN&newwindow=1";
    byte[]?bs?=?Encoding.ASCII.GetBytes(param);

    HttpWebRequest?req?
    =?(HttpWebRequest)?HttpWebRequest.Create(?"http://www.google.com/intl/zh-CN/"?);
    req.Method?
    =?"POST";
    req.ContentType?
    =?"application/x-www-form-urlencoded";
    req.ContentLength?
    =?bs.Length;

    using?(Stream?reqStream?=?req.GetRequestStream())
    {
    ???reqStream.Write(bs,?
    0,?bs.Length);
    }
    using?(WebResponse?wr?=?req.GetResponse())
    {
    ???
    //在這里對接收到的頁面內容進行處理
    }?


    在上面的代碼中,我們訪問了?www.google.com?的網址,分別以?GET?和?POST?方式提交了數據,并接收了返回的頁面內容。然而,如果提交的參數中含有中文,那么這樣的處理是不夠的,需要對其進行編碼,讓對方網站能夠識別。?

    3.?使用?GET?方式提交中文數據。?GET?方式通過在網絡地址中附加參數來完成數據提交,對于中文的編碼,常用的有?gb2312?和?utf8?兩種,用?gb2312?方式編碼訪問的程序代碼如下:?

    Encoding?myEncoding?=?Encoding.GetEncoding("gb2312");
    string?address??=?"http://www.baidu.com/s?"?+?HttpUtility.UrlEncode("參數一",?myEncoding)?+??"="?+?HttpUtility.UrlEncode("值一",?myEncoding);
    HttpWebRequest?req?
    =?(HttpWebRequest)HttpWebRequest.Create(address);
    req.Method?
    =?"GET";
    using?(WebResponse?wr?=?req.GetResponse())
    {
    ???
    //在這里對接收到的頁面內容進行處理
    }?


    在 上面的程序代碼中,我們以?GET?方式訪問了網址?http://www.baidu.com/s?,傳遞了參數“參數一=值一”,由于無法告知對方提 交數據的編碼類型,所以編碼方式要以對方的網站為標準。常見的網站中,?www.baidu.com?(百度)的編碼方式是?gb2312, ?www.google.com?(谷歌)的編碼方式是?utf8。?

    4.?使用?POST?方式提交中文數據。?POST?方式通過在頁面內容中填寫參數的方法來完成數據的提交,由于提交的參數中可以說明使用的編碼方式,所以理論上能獲得更大的兼容性。用?gb2312?方式編碼訪問的程序代碼如下:?

    Encoding?myEncoding?=?Encoding.GetEncoding("gb2312");
    string?param??=?HttpUtility.UrlEncode("參數一",?myEncoding)?+?"="?+?HttpUtility.UrlEncode?("值一",?myEncoding)?+?"&"?+?HttpUtility.UrlEncode("參數二",?myEncoding)??+?"="?+?HttpUtility.UrlEncode("值二",?myEncoding);

    byte[]?postBytes?=?Encoding.ASCII.GetBytes(param);

    HttpWebRequest?req?
    =?(HttpWebRequest)?HttpWebRequest.Create(?"http://www.baidu.com/s"?);
    req.Method?
    =?"POST";
    req.ContentType?
    =?"application/x-www-form-urlencoded;charset=gb2312";
    req.ContentLength?
    =?postBytes.Length;

    using?(Stream?reqStream?=?req.GetRequestStream())
    {
    ???reqStream.Write(
    postBytes ,?0, postBytes .Length);
    }
    using?(WebResponse?wr?=?req.GetResponse())
    {
    ???
    //在這里對接收到的頁面內容進行處理
    }?


    從上面的代碼可以看出,?POST?中文數據的時候,先使用?UrlEncode?方法將中文字符轉換為編碼后的?ASCII?碼,然后提交到服務器,提交的時候可以說明編碼的方式,用來使對方服務器能夠正確的解析。?

    以 上列出了客戶端程序使用?HTTP?協議與服務器交互的情況,常用的是?GET?和?POST?方式。現在流行的?WebService?也是通過 ?HTTP?協議來交互的,使用的是?POST?方法。與以上稍有所不同的是,?WebService?提交的數據內容和接收到的數據內容都是使用了 ?XML?方式編碼。所以,?HttpWebRequest?也可以使用在調用?WebService?的情況下。

    評論

    # re: 使用 HttpWebRequest 向網站提交數據[未登錄]  回復  更多評論   

    2008-07-12 10:17 by 小灰
    不錯,歡迎到我網站看看

    # 辦文憑  回復  更多評論   

    2008-08-17 23:17 by 經理
    辦文憑

    # re: 使用 HttpWebRequest 向網站提交數據  回復  更多評論   

    2011-05-20 15:08 by <a title="permalink: 辦文憑" href="
    學習了不少東西 怎么看到有人辦證?

    # re: 使用 HttpWebRequest 向網站提交數據  回復  更多評論   

    2011-05-20 15:10 by 回復
    學習了
    主站蜘蛛池模板: 在线观看午夜亚洲一区| 免费h片在线观看网址最新| 午夜国产大片免费观看| 亚洲一卡2卡三卡4卡无卡下载 | 热re99久久6国产精品免费| 亚洲开心婷婷中文字幕| 91精品成人免费国产| 国产AV无码专区亚洲AVJULIA| 怡红院免费全部视频在线视频| 亚洲乱码中文字幕久久孕妇黑人| 东方aⅴ免费观看久久av | 久久99国产乱子伦精品免费| 亚洲欧洲日产韩国在线| 一二三四在线播放免费观看中文版视频| 亚洲免费观看网站| 永久黄网站色视频免费| 日本免费精品一区二区三区 | 亚洲男人天堂2020| 三上悠亚在线观看免费| 久久久国产精品亚洲一区| 99视频在线精品免费观看6| 亚洲AV无码AV吞精久久| 亚洲国产午夜中文字幕精品黄网站| 精品一区二区三区高清免费观看| 久久久久亚洲精品成人网小说| 久久WWW免费人成一看片| 亚洲AV无码成人精品区日韩 | 国产在线观看免费视频软件| 亚洲精品免费观看| 爽爽日本在线视频免费| 东北美女野外bbwbbw免费| 亚洲专区一路线二| 亚洲国产精品一区二区第四页| 日本在线免费观看| 亚洲成_人网站图片| 久久精品国产亚洲Aⅴ蜜臀色欲| 精品国产麻豆免费人成网站| 亚洲人成网站色7799| 亚洲乱码无码永久不卡在线| 天天摸天天碰成人免费视频| 日本三级在线观看免费|