日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用HttpWebRequest请求API接口以及其他网站资源

發布時間:2025/7/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用HttpWebRequest请求API接口以及其他网站资源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多時候,我們項目需要其他網站的資源,而這個被請求的網站可能屬于你們自己開發管理的網站。也可能是公網上其他網站對外開發的API接口,比如說騰訊的微信公眾平臺的API接口、各大短信服務商的短信API接口等。

為了上述的功能效果,我們就需要了解Asp.Net中的兩個相關類,一個是HttpWebRequest類,另一個是HttpWebResponse類。

下面對這兩個類進行簡要概述下:

HttpWebRequest類:提供支持的屬性和方法中定義WebRequst以及其他屬性和方法,使用戶直接通過 HTTP 與服務器交互。

HttpWebResponse類:用于生成 HTTP 獨立客戶端應用程序發送 HTTP 請求和接收 HTTP 響應。

既然了解了上述兩個類的作用,那我們就可以通過設置Post或者Get方式的請求參數,給定指定的url地址鏈接,我們就可以對目標網站的接口發起Http請求,獲取我們想要的數據。

下面是使用HttpWebRequestHttpWebResponse類封裝的一個請求類,讀者可自行復制即可使用,封裝了Get請求和Post請求。具體的代碼如下:

public class HttpWebResponseUtility{private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";/// <summary> /// 創建GET方式的HTTP請求 /// </summary> /// <param name="url">請求的URL</param> /// <param name="timeout">請求的超時時間</param> /// <param name="userAgent">請求的客戶端瀏覽器信息,可以為空</param> /// <param name="cookies">隨同HTTP請求發送的Cookie信息,如果不需要身份驗證可以為空</param> /// <returns></returns> public static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies){if (string.IsNullOrEmpty(url)){throw new ArgumentNullException("url");}HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;request.Method = "GET";request.UserAgent = DefaultUserAgent;if (!string.IsNullOrEmpty(userAgent)){request.UserAgent = userAgent;}if (timeout.HasValue){request.Timeout = timeout.Value;}if (cookies != null){request.CookieContainer = new CookieContainer();request.CookieContainer.Add(cookies);}return request.GetResponse() as HttpWebResponse;}/// <summary> /// 創建POST方式的HTTP請求 /// </summary> /// <param name="url">請求的URL</param> /// <param name="parameters">隨同請求POST的參數名稱及參數值字典</param> /// <param name="timeout">請求的超時時間</param> /// <param name="userAgent">請求的客戶端瀏覽器信息,可以為空</param> /// <param name="requestEncoding">發送HTTP請求時所用的編碼</param> /// <param name="cookies">隨同HTTP請求發送的Cookie信息,如果不需要身份驗證可以為空</param> /// <returns></returns> public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int? timeout, string userAgent, Encoding requestEncoding, CookieCollection cookies){if (string.IsNullOrEmpty(url)){throw new ArgumentNullException("url");}if (requestEncoding == null){throw new ArgumentNullException("requestEncoding");}HttpWebRequest request = null;//如果是發送HTTPS請求 if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)){ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);request = WebRequest.Create(url) as HttpWebRequest;request.ProtocolVersion = HttpVersion.Version10;}else{request = WebRequest.Create(url) as HttpWebRequest;}request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";if (!string.IsNullOrEmpty(userAgent)){request.UserAgent = userAgent;}else{request.UserAgent = DefaultUserAgent;}if (timeout.HasValue){request.Timeout = timeout.Value;}if (cookies != null){request.CookieContainer = new CookieContainer();request.CookieContainer.Add(cookies);}//如果需要POST數據 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 = requestEncoding.GetBytes(buffer.ToString());using (Stream stream = request.GetRequestStream()){stream.Write(data, 0, data.Length);}}return request.GetResponse() as HttpWebResponse;}private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors){return true; //總是接受 }}

  有了上面2個封裝的方法,我們下面就模擬下登錄自己的站點,先分析自己的網站demo登錄實例,分析出需要傳遞的Post參數。如何分析此處不詳細闡述,請讀者自行查閱資料。

/// <summary>/// 模擬登錄網站,并獲取cookie/// </summary>public static void Request3(){string loginUrl = "博主某網站域名登錄域名/login";string userName = "userName";string password = "password";string tagUrl = "博主某網站域名" + userName + "/token";
//設置編碼方式Encoding encoding = Encoding.GetEncoding("gb2312");
//此處設置Post請求的參數IDictionary<string, string> parameters = new Dictionary<string, string>();parameters.Add("參數1", "fa");parameters.Add("參數2", "fa");parameters.Add("參數3", tagUrl);parameters.Add("參數4", "0");parameters.Add("username", userName);parameters.Add("password", password);
//通過CreatePostHttpResponse方式請求登錄的接口HttpWebResponse response = HttpWebResponseUtility.CreatePostHttpResponse(loginUrl, parameters, null, null, encoding, null);
//獲取返回數據中的Cookie設置值。string cookieString = response.Headers["Set-Cookie"];//后續你想做的其他操作}

  接上面Request3的方法,登錄成功后,獲取到登錄后的cookie,我們就可以通過在請求中帶上Cookie的方式去請求網站的其他資源信息。下面這個方法就是通過Get請求獲取相應網站頁面數據,方法如下:

public static void Request4(){string tagUrl = "登錄后可訪問的某些Get請求的URL地址";CookieCollection cookies = new CookieCollection();//如何從response.Headers["Set-Cookie"];中獲取并設置CookieCollection的代碼略,參照博文上一段var response = HttpWebResponseUtility.CreateGetHttpResponse(tagUrl, null, null, cookies); }

  

如果我們通過模擬網頁請求獲取到的是網頁HTML數據,我們就可以通過分析網頁文檔中的Dom結構等獲取相應的數據,分析出你需要的信息。

如果獲取的數據是Json數據,那個這個數據就更直接簡單明了,分析Json字符串每個字段的含義即可了,后續的操作就根據你的項目業務邏輯進行編寫。

網上很多網站開放的API接口返回的數據就是Json字符串,比如一些網站提供的短信服務接口,接口返回數據就是Json字符串,返回的數據中絕對有一個字段告知你短信是否發送成功。

當然,還有些網站接口返回的數據是XML格式,這些就留給讀者自行去研究了。

最后提下HTTP請求分析工具,你可以使用谷歌瀏覽器自帶的F12調試功能進行分析,可以分析出請求的參數列表、返回的數據、Cookie數據等。

也可使用專業的抓包工具,如PostMan,fiddler等,這兩種工具對于網站API接口開發人員來說是常用的工具,可以不用寫代碼,輕松自定義請求參數快捷測試網站API接口。

?

最后,附上博主的IT技術學習群,歡迎各位同行入群指導交流。技術群:872894940

更多文章可以關注博主個人站點:IT技術小屋

轉載于:https://www.cnblogs.com/xu-yi/p/10061342.html

總結

以上是生活随笔為你收集整理的使用HttpWebRequest请求API接口以及其他网站资源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级不卡视频 | 久久99精品久久久久子伦 | 成人欧美视频在线观看 | 丰满岳乱妇一区二区 | japanese国产| 亚洲无码精品国产 | 夜夜嗨一区二区 | 男人操女人的网站 | 不卡的av网站 | 黄色成年人| 蜜桃视频一区二区三区 | 国产v亚洲v天堂无码 | 超碰人人人人人人人 | 久草高清视频 | 国产精品igao视频 | 日本一区二区三区在线观看视频 | 欧美精品一级二级 | 97毛片| 九一精品一区 | 97国产免费 | 日本精品视频在线观看 | 日本人xxxⅹ18hd19hd| 变态另类丨国产精品 | 在线91av | 日本在线精品 | 男女在线免费观看 | 久草青青草 | 福利视频在线播放 | 91春色| 在线视频播放大全 | 最好看的mv中文字幕国语电影 | 久久偷看各类女兵18女厕嘘嘘 | 国产精品揄拍一区二区 | 性色AV无码久久一区二区三 | 精品在线不卡 | 亚洲精品高清视频 | 国产肉体ⅹxxx137大胆 | 依人在线 | 秋霞成人网 | 亚欧美| 精品成人在线 | 色中文字幕 | 欧美一区精品 | 污视频网站在线看 | 波多野结衣视频免费 | 欧美性受xxxx黑人xyx | 欧美a∨| 亚洲影院在线观看 | 中文字幕日韩欧美一区二区 | 伊人久久大香线蕉 | 91黄在线看| 欧美一级乱黄 | 伊朗做爰xxxⅹ性视频 | 色资源在线观看 | 手机看片久久 | 久久在线一区二区 | 97免费观看视频 | 国产亚洲精品成人 | 色多多av | 欧美午夜大片 | 少妇高潮毛片色欲ava片 | 亚洲调教| 波多野结衣久久精品 | 日韩伊人久久 | 久久噜噜噜精品国产亚洲综合 | 毛片毛片毛片毛片毛片 | 女同动漫免费观看高清完整版在线观看 | 男生和女生操操 | 亚洲jizzjizz | 99热热久久 | 麻豆小视频| 久久成人资源 | 欧美做受高潮1 | 日韩精品不卡 | 色婷婷久久综合 | 国产在线看一区 | 夫妻性生活黄色大片 | 海角社区在线视频播放观看 | 欧美黑人一级爽快片淫片高清 | 成人在线观看免费网站 | 99久久精品久久久久久清纯 | 久久这里有精品 | 大尺度做爰呻吟舌吻情头 | 2017狠狠干| 精品动漫一区二区 | 日本一区二区观看 | 波多野 在线| 樱花av在线| 国产精品久久久久久久久免费软件 | 视频一区二区三区四区五区 | 美女福利在线观看 | 亚洲第一页乱 | 欧洲亚洲成人 | 久久艹伊人 | 萌白酱一区二区 | 欧美国产日韩一区二区三区 | 日韩国产精品一区二区三区 | 久久麻豆视频 | 熟女熟妇伦久久影院毛片一区二区 |