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

C#調(diào)用接口的四種方式介紹

 更新時間:2022年06月15日 10:11:03   作者:艾三元  
這篇文章介紹了C#調(diào)用接口的四種方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在用C#調(diào)用接口的時候,遇到需要通過調(diào)用登錄接口才能調(diào)用其他的接口,因為在其他的接口需要在登錄的狀態(tài)下保存Cookie值才能有權(quán)限調(diào)用,所以首先需要通過調(diào)用登錄接口來保存cookie值,再進(jìn)行其他接口的調(diào)用

1.通過Get方式

        #region get方式

        public string HttpGet(string url)
        {

            Encoding encoding = Encoding.UTF8;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "application/json";
            request.Headers["Accept-Encoding"] = "gzip,deflase";
            request.AutomaticDecompression = DecompressionMethods.GZip;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            // HttpCookie cookies = new HttpCookie("admin");  //如果有需要通過登錄實現(xiàn)保存cookie值的話可以加一部分
            // cookies.Value = Convert.ToString(response.Headers["Set-Cookie"]); // 通過響應(yīng)請求讀取帶cookie的http數(shù)據(jù)
            // cookies.Expires = DateTime.Now.AddDays(1);
            //  HttpContext.Current.Response.Cookies.Add(cookies);

            using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
        #endregion

但是并不是所有的get請求都需要添加這個heard的內(nèi)容,有些加了這個可能出現(xiàn)亂碼的情況,所以不要設(shè)置Accept-Encoding的Header

此處之所以加此header,是因為看到網(wǎng)頁分析工具中所得到的瀏覽器瀏覽該網(wǎng)頁,對應(yīng)的http的header的內(nèi)容中,就是這樣設(shè)置的。

所以,代碼中,也是模擬瀏覽器去訪問網(wǎng)頁,就設(shè)置了對應(yīng)的Accept-Encoding為gzip,deflate了

普通瀏覽器訪問網(wǎng)頁,之所以添加:"Accept-Encoding" = "gzip,deflate"

那是因為,瀏覽器對于從服務(wù)器中返回的對應(yīng)的gzip壓縮的網(wǎng)頁,會自動解壓縮,所以,其request的時候,添加對應(yīng)的頭,表明自己接受壓縮后的數(shù)據(jù)。

同時添加了 request.AutomaticDecompression = DecompressionMethods.GZip;這一句,便可以獲得正確的數(shù)據(jù)。

如果你獲取網(wǎng)頁內(nèi)容太大的話,那么還是可以用這個辦法的,這樣就可以讓HttpWebRequest自動幫你實現(xiàn)對應(yīng)的解壓縮了,可以減少數(shù)據(jù)數(shù)據(jù)傳輸量,節(jié)省時間,提高效率。

2.通過post方式

public string HttpPost2(string url, string body)
{

   //把用戶傳過來的數(shù)據(jù)轉(zhuǎn)成“UTF-8”的字節(jié)流
    Encoding encoding = Encoding.UTF8;
    //先根據(jù)用戶請求的uri構(gòu)造請求地址
    //創(chuàng)建Web訪問對象
    HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
    request.Method = "POST";
    // request.Accept = "application/json";
   request.ContentType = "application/json; charset=UTF-8";
   request.Headers["Accept-Encoding"] = "gzip, deflate";
   request.AutomaticDecompression = DecompressionMethods.GZip;
   //HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies["admin"];  //若是需要登錄過后再能訪問獲取url的數(shù)據(jù),需要在請求頭中設(shè)置cookie值
   //if (Cookie != null)
   //    request.Headers.Add("Cookie", Cookie.Value.ToString());

   byte[] buffer = encoding.GetBytes(body);
   request.ContentLength = buffer.Length;
   request.GetRequestStream().Write(buffer, 0, buffer.Length);
   //通過Web訪問對象獲取響應(yīng)內(nèi)容
   HttpWebResponse response = (HttpWebResponse) request.GetResponse();
   //通過響應(yīng)內(nèi)容流創(chuàng)建StreamReader對象,因為StreamReader更高級更快
   using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
   {
    return reader.ReadToEnd();//利用StreamReader就可以從響應(yīng)內(nèi)容從頭讀到尾
   }
 }

3.通過put請求

        #region Put請求
        public string Put(string data, string uri)
        {//創(chuàng)建Web訪問對象
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(uri);
            //把用戶傳過來的數(shù)據(jù)轉(zhuǎn)成“UTF-8”的字節(jié)流
            byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);

            Request.Method = "PUT";
            Request.ContentLength = buf.Length;
            Request.ContentType = "application/json";
            Request.MaximumAutomaticRedirections = 1;
            Request.AllowAutoRedirect = true;
            //發(fā)送請求
            Stream stream = Request.GetRequestStream();
            stream.Write(buf, 0, buf.Length);
            stream.Close();

            //獲取接口返回值
            //通過Web訪問對象獲取響應(yīng)內(nèi)容
            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
            //通過響應(yīng)內(nèi)容流創(chuàng)建StreamReader對象,因為StreamReader更高級更快
            StreamReader reader = new StreamReader(Response.GetResponseStream(), Encoding.UTF8);
            //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法
            string returnXml = reader.ReadToEnd();//利用StreamReader就可以從響應(yīng)內(nèi)容從頭讀到尾
            reader.Close();
            Response.Close();
            return returnXml;

        }           
        #endregion

4.通過Delete請求

        #region Delete請求
        public string Delete(string data, string uri)
        {
            //創(chuàng)建Web訪問對象
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(uri);
            //把用戶傳過來的數(shù)據(jù)轉(zhuǎn)成“UTF-8”的字節(jié)流
            byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);

            Request.Method = "DELETE";
            Request.ContentLength = buf.Length;
            Request.ContentType = "application/json";
            Request.MaximumAutomaticRedirections = 1;
            Request.AllowAutoRedirect = true;
            //發(fā)送請求
            Stream stream = Request.GetRequestStream();
            stream.Write(buf, 0, buf.Length);
            stream.Close();

            //獲取接口返回值
            //通過Web訪問對象獲取響應(yīng)內(nèi)容
            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
            //通過響應(yīng)內(nèi)容流創(chuàng)建StreamReader對象,因為StreamReader更高級更快
            StreamReader reader = new StreamReader(Response.GetResponseStream(), Encoding.UTF8);
            //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法
            string returnXml = reader.ReadToEnd();//利用StreamReader就可以從響應(yīng)內(nèi)容從頭讀到尾
            reader.Close();
            Response.Close();
            return returnXml;

        }
       #endregion

不同的場景需求,使用不同的方式,應(yīng)用在不同的場景 。

通過這幾種組合方式 ,可以調(diào)用http接口,完成調(diào)用和測試。

到此這篇關(guān)于C#調(diào)用接口的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#代碼性能測試類(簡單實用)

    C#代碼性能測試類(簡單實用)

    這篇文章主要介紹了C#代碼性能測試類(簡單實用),本文直接給出實現(xiàn)代碼和使用示例,需要的朋友可以參考下
    2015-06-06
  • C#實現(xiàn)無限級聯(lián)下拉列表框

    C#實現(xiàn)無限級聯(lián)下拉列表框

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)無限級聯(lián)下拉列表框的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-03-03
  • C#使用timer實現(xiàn)的簡單鬧鐘程序

    C#使用timer實現(xiàn)的簡單鬧鐘程序

    這篇文章主要介紹了C#使用timer實現(xiàn)的簡單鬧鐘程序,涉及timer控件的使用及音頻文件的操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C#后臺調(diào)用前臺JS函數(shù)方法

    C#后臺調(diào)用前臺JS函數(shù)方法

    今天小編就為大家分享一篇關(guān)于C#后臺調(diào)用前臺JS函數(shù)方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C#中關(guān)于zip壓縮解壓幫助類的封裝 附源碼下載

    C#中關(guān)于zip壓縮解壓幫助類的封裝 附源碼下載

    之前一個同學(xué)問了這個問題后,看了園子里其它園友的封裝,都很零碎,調(diào)用也不是很方便。所以自己就封裝了一個zip解壓的類。后來想整理下怕自己忘了。就把壓縮的類也一并封裝了
    2013-02-02
  • C#使用windows服務(wù)開啟應(yīng)用程序的方法

    C#使用windows服務(wù)開啟應(yīng)用程序的方法

    這篇文章主要介紹了C#使用windows服務(wù)開啟應(yīng)用程序的方法,實例分析了C#操作windows服務(wù)開啟應(yīng)用程序所遇到的問題及相關(guān)解決技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#中的委托delegate用法的示例詳解

    C#中的委托delegate用法的示例詳解

    這篇文章主要介紹了C#中的委托用法的示例詳解。本章將由淺入深地講述什么是委托、為什么要使用委托、事件的由來、.NET Framework 中的委托和事件、委托中方法異常和超時的處理、委托與異步編程、委托和事件對Observer 設(shè)計模式的意義。感興趣的可以了解一下
    2020-07-07
  • C#顯式地實現(xiàn)接口成員的方法

    C#顯式地實現(xiàn)接口成員的方法

    這篇文章主要介紹了C#顯式地實現(xiàn)接口成員的方法,實例分析了C#接口的相關(guān)使用技巧,需要的朋友可以參考下
    2015-06-06
  • C#編程之事務(wù)用法

    C#編程之事務(wù)用法

    這篇文章主要介紹了C#編程之事務(wù)用法,結(jié)合實例形式對比分析了C#中事務(wù)提交與回滾的具體實現(xiàn)技巧與相關(guān)注意事項,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 關(guān)于C#繼承的簡單應(yīng)用代碼分析

    關(guān)于C#繼承的簡單應(yīng)用代碼分析

    在本篇文章里小編給大家整理了一篇關(guān)于C#繼承的簡單應(yīng)用代碼分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-05-05

最新評論

留坝县| 福建省| 敦煌市| 都安| 菏泽市| 陆河县| 彭泽县| 龙里县| 濮阳县| 彰化市| 犍为县| 铜山县| 南皮县| 白朗县| 常山县| 会泽县| 阿合奇县| 平塘县| 德昌县| 大兴区| 新安县| 平罗县| 山阴县| 顺义区| 山东| 花莲市| 贡觉县| 安泽县| 福安市| 册亨县| 麟游县| 萨嘎县| 松潘县| 通许县| 荆州市| 平阴县| 伊春市| 阿克| 田林县| 鹿邑县| 烟台市|