最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#通過GET/POST方式發(fā)送Http請求

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

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

兩者的區(qū)別:

參數(shù)

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

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

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

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

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

安全性

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

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

Get請求

請求類

///
/// Get請求
/// 
/// 
/// 字符串
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請求

        /// 創(chuàng)建POST方式的HTTP請求  
        public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
        {
            HttpWebRequest request = null;
            //如果是發(fā)送HTTPS請求  
            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和超時
            //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>
    /// 獲取請求的數(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請求
System.Net.HttpWebResponse res = HttpHelper.CreatePostHttpResponse(url, parameters, 3000, null, null);
if (res == null)
{
    Response.Redirect("RequestFailed.aspx?result=出錯了,可能是由于您的網(wǎng)絡(luò)環(huán)境差、不穩(wěn)定或安全軟件禁止訪問網(wǎng)絡(luò),您可在網(wǎng)絡(luò)好時或關(guān)閉安全軟件在重新訪問網(wǎng)絡(luò)。");
}
else
{
    //獲取返回數(shù)據(jù)轉(zhuǎn)為字符串
   string mes = HttpHelper.GetResponseString(res);
   T model = JsonHelper.DeserializeJsonToObject<T>(mes);
}

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

相關(guān)文章

  • C#調(diào)用AForge實現(xiàn)攝像頭錄像的示例代碼

    C#調(diào)用AForge實現(xiàn)攝像頭錄像的示例代碼

    這篇文章主要介紹了C#調(diào)用AForge實現(xiàn)攝像頭錄像的示例代碼,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • C#網(wǎng)站生成靜態(tài)頁面的實例講解

    C#網(wǎng)站生成靜態(tài)頁面的實例講解

    今天小編就為大家分享一篇關(guān)于C#網(wǎng)站生成靜態(tài)頁面的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C#中流的使用和分類

    C#中流的使用和分類

    這篇文章介紹了C#中流的使用和分類,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C#使用OleDb操作Excel和數(shù)據(jù)庫的策略

    C#使用OleDb操作Excel和數(shù)據(jù)庫的策略

    在C#編程中,使用OleDb可以方便地實現(xiàn)對Excel文件和數(shù)據(jù)庫的操作,本文探討了在C#中使用OleDb技術(shù)操作Excel和數(shù)據(jù)庫的策略,文章詳述了OleDb的定義、配置環(huán)境的步驟,并通過實際代碼示例演示了如何高效讀寫Excel文件和交互數(shù)據(jù)庫,需要的朋友可以參考下
    2024-05-05
  • c# Newtonsoft 六個值得使用的特性(下)

    c# Newtonsoft 六個值得使用的特性(下)

    這篇文章主要介紹了c# Newtonsoft 六個值得使用的特性,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • 通過特性(attribute)為枚舉添加更多信息示例

    通過特性(attribute)為枚舉添加更多信息示例

    這篇文章主要介紹了通過特性(Attribute)為枚舉添加更多的信息,大家參考使用吧
    2014-01-01
  • 12306奇葩驗證碼引發(fā)思考之C#實現(xiàn)驗證碼程序

    12306奇葩驗證碼引發(fā)思考之C#實現(xiàn)驗證碼程序

    春運最高峰來了!明天通過網(wǎng)絡(luò)將能買到小年夜的車票,本周四就將開售除夕日車票,但不少人被首次在春運期間使用的圖片驗證碼搞得很火大,小編也正在對驗證碼進行研究,編寫了由C#實現(xiàn)驗證碼程序,分享給大家
    2015-12-12
  • 淺談C#中的值類型和引用類型

    淺談C#中的值類型和引用類型

    在C#中值類型的變量直接存儲數(shù)據(jù),而引用類型的變量持有的是數(shù)據(jù)的引用,數(shù)據(jù)存儲在數(shù)據(jù)堆中。下面我們來簡單談?wù)凜#中的值類型和引用類型
    2016-06-06
  • C#使用GDI繪制直線的方法

    C#使用GDI繪制直線的方法

    這篇文章主要介紹了C#使用GDI繪制直線的方法,涉及C#中使用GDI繪圖的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Unity3D自定義創(chuàng)建圓錐體

    Unity3D自定義創(chuàng)建圓錐體

    這篇文章主要為大家詳細介紹了Unity3D自定義創(chuàng)建圓錐體,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評論

峡江县| 博爱县| 绥阳县| 东莞市| 得荣县| 太湖县| 图木舒克市| 宁陕县| 阜城县| 昌吉市| 富宁县| 临朐县| 蓬莱市| 全南县| 宝清县| 杂多县| 定州市| 黑河市| 斗六市| 龙州县| 庆云县| 五家渠市| 灵台县| 平利县| 友谊县| 延津县| 陇西县| 绩溪县| 大同县| 乌拉特后旗| 晋江市| 长子县| 乌兰浩特市| 松桃| 衡阳市| 石楼县| 吉首市| 永新县| 宣汉县| 磴口县| 澎湖县|