欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#通過(guò)GET/POST方式發(fā)送Http請(qǐng)求

 更新時(shí)間:2021年09月10日 16:02:36   作者:mrli113  
本文主要介紹了C#實(shí)現(xiàn)http請(qǐng)求的兩種方式,get和post方式。文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

介紹http請(qǐng)求的兩種方式,get和post方式。并用C#語(yǔ)言實(shí)現(xiàn),如何請(qǐng)求url并獲取返回的數(shù)據(jù)

兩者的區(qū)別:

參數(shù)

Get請(qǐng)求把提交的數(shù)據(jù)進(jìn)行簡(jiǎn)單編碼,同時(shí)將url的一部分發(fā)送到服務(wù)器
比如url:Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
所以get請(qǐng)求方式提交的數(shù)據(jù)存在一定的安全隱患,如果在使用對(duì)安全性要求教高的操作(比如用戶登錄,支付),應(yīng)使用post方式。Get請(qǐng)求是默認(rèn)的http請(qǐng)求方法,我們一般通過(guò)get方法來(lái)獲取表單數(shù)據(jù)

POST請(qǐng)求會(huì)把請(qǐng)求的數(shù)據(jù)放置在HTTP請(qǐng)求包的包體中。上面的item=bandsaw就是實(shí)際的傳輸數(shù)據(jù)。

傳輸數(shù)據(jù)的大小

GET,特定的瀏覽器和服務(wù)器對(duì)URL的長(zhǎng)度有限制。因此,在使用GET請(qǐng)求時(shí),傳輸數(shù)據(jù)會(huì)受到URL長(zhǎng)度的限制。

POST,由于不是URL傳值,理論上是不會(huì)受限制的,但是實(shí)際上各個(gè)服務(wù)器會(huì)規(guī)定對(duì)POST提交數(shù)據(jù)大小進(jìn)行限制,Apache、IIS都有各自的配置。

安全性

POST的安全性比GET的高。這里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改服務(wù)器的數(shù)據(jù)。比如,在進(jìn)行登錄操作,通過(guò)GET請(qǐng)求,用戶名和密碼都會(huì)暴露再URL上,因?yàn)榈卿涰?yè)面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因,此時(shí)的用戶名和密碼就很容易被他人拿到了。除此之外,GET請(qǐng)求提交的數(shù)據(jù)還可能會(huì)造成Cross-site request frogery攻擊

HTTP中的GET,POST,SOAP協(xié)議都是在HTTP上運(yùn)行的

Get請(qǐng)求

請(qǐng)求類

///
/// Get請(qǐng)求
/// 
/// 
/// 字符串
public static string GetHttpResponse(string url, int Timeout)
{
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
      request.Method = "GET";
      request.ContentType = "text/html;charset=UTF-8";
      request.UserAgent = null;
      request.Timeout = Timeout;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream myResponseStream = response.GetResponseStream();
    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
    string retString = myStreamReader.ReadToEnd();
    myStreamReader.Close();
    myResponseStream.Close();

    return retString;
}

調(diào)用方法

string url="Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB";
string res = HttpHelper.GetHttpResponse(url, 6000);
if (res != null)
{
   T mes = JsonHelper.DeserializeJsonToObject<T>(res)
}

Post請(qǐng)求

        /// 創(chuàng)建POST方式的HTTP請(qǐng)求  
        public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
        {
            HttpWebRequest request = null;
            //如果是發(fā)送HTTPS請(qǐng)求  
            if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                request = WebRequest.Create(url) as HttpWebRequest;
            }
            else
            {
                request = WebRequest.Create(url) as HttpWebRequest;
            }
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";

            //設(shè)置代理UserAgent和超時(shí)
            //request.UserAgent = userAgent;
            //request.Timeout = timeout; 

            if (cookies != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookies);
            }
            //發(fā)送POST數(shù)據(jù)  
            if (!(parameters == null || parameters.Count == 0))
            {
                StringBuilder buffer = new StringBuilder();
                int i = 0;
                foreach (string key in parameters.Keys)
                {
                    if (i > 0)
                    {
                        buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                    }
                    else
                    {
                        buffer.AppendFormat("{0}={1}", key, parameters[key]);
                        i++;
                    }
                }
                byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            string[] values = request.Headers.GetValues("Content-Type");
            return request.GetResponse() as HttpWebResponse;
        }


    /// <summary>
    /// 獲取請(qǐng)求的數(shù)據(jù)
    /// </summary>
    public static string GetResponseString(HttpWebResponse webresponse)
    {
        using (Stream s = webresponse.GetResponseStream())
        {
            StreamReader reader = new StreamReader(s, Encoding.UTF8);
            return reader.ReadToEnd();

        }
    }

調(diào)用方法

//參數(shù)p
IDictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("p", HttpUtility.UrlEncode(p));
//http請(qǐng)求
System.Net.HttpWebResponse res = HttpHelper.CreatePostHttpResponse(url, parameters, 3000, null, null);
if (res == null)
{
    Response.Redirect("RequestFailed.aspx?result=出錯(cuò)了,可能是由于您的網(wǎng)絡(luò)環(huán)境差、不穩(wěn)定或安全軟件禁止訪問(wèn)網(wǎng)絡(luò),您可在網(wǎng)絡(luò)好時(shí)或關(guān)閉安全軟件在重新訪問(wèn)網(wǎng)絡(luò)。");
}
else
{
    //獲取返回?cái)?shù)據(jù)轉(zhuǎn)為字符串
   string mes = HttpHelper.GetResponseString(res);
   T model = JsonHelper.DeserializeJsonToObject<T>(mes);
}

到此這篇關(guān)于C#通過(guò)GET/POST方式發(fā)送Http請(qǐng)求的文章就介紹到這了,更多相關(guān)C# 發(fā)送Http請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# WPF中通過(guò)雙擊編輯DataGrid中Cell的示例(附源碼)

    c# WPF中通過(guò)雙擊編輯DataGrid中Cell的示例(附源碼)

    這篇文章主要介紹了c# WPF中通過(guò)雙擊編輯DataGrid中Cell的示例(附源碼),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 利用unity代碼C#封裝為dll的步驟分享

    利用unity代碼C#封裝為dll的步驟分享

    這篇文章主要給大家介紹了關(guān)于利用unity代碼C#封裝為dll的相關(guān)資料,文中通過(guò)圖文將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • C#調(diào)用WebService實(shí)例開(kāi)發(fā)

    C#調(diào)用WebService實(shí)例開(kāi)發(fā)

    那么,我們?cè)趺丛陧?xiàng)目中調(diào)用WebService這個(gè)方法呢,其實(shí)這和調(diào)用天氣的webservice是一個(gè)道理,首先,通過(guò)添加“web服務(wù) 引用”將,你寫(xiě)的webservice引用進(jìn)來(lái),我們需要注意的是其中有一處要我們填寫(xiě)請(qǐng)求webservice的URL地址,我們?cè)撛趺磳?xiě)?
    2015-09-09
  • C# IEnumerator枚舉器的具體使用

    C# IEnumerator枚舉器的具體使用

    本文主要介紹了C# IEnumerator枚舉器的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 教你C#將CSV轉(zhuǎn)為Excel的實(shí)現(xiàn)方法

    教你C#將CSV轉(zhuǎn)為Excel的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#?將CSV轉(zhuǎn)為Excel,轉(zhuǎn)換之后可執(zhí)行更多關(guān)于數(shù)據(jù)編輯、格式設(shè)置等操作,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-03-03
  • C#圖片按比例縮放實(shí)例

    C#圖片按比例縮放實(shí)例

    這篇文章主要為大家詳細(xì)介紹了C#圖片按比例縮放的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • C#將Json解析成DateTable的方法

    C#將Json解析成DateTable的方法

    這篇文章主要介紹了C#將Json解析成DateTable的方法,涉及相關(guān)格式轉(zhuǎn)換的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • C# PLINQ 內(nèi)存列表查詢優(yōu)化歷程

    C# PLINQ 內(nèi)存列表查詢優(yōu)化歷程

    這篇文章主要介紹了C# PLINQ 內(nèi)存列表查詢優(yōu)化歷程的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • C#如何處理JSON

    C#如何處理JSON

    這篇文章主要介紹了C#如何處理JSON問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • winform 使用Anchor屬性進(jìn)行界面布局的方法詳解

    winform 使用Anchor屬性進(jìn)行界面布局的方法詳解

    這篇文章主要介紹了winform 使用Anchor屬性進(jìn)行界面布局的方法,有需要的朋友可以參考一下
    2013-12-12

最新評(píng)論