/// <summary> /// 【异步方法】异步GetJson /// </summary> /// <param name="serviceProvider">.NetCore 下的服务器提供程序,如果 .NET Framework 则保留 null</param> /// <param name="url"></param> /// <param name="encoding"></param> /// <param name="afterReturnText">返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText</param> /// <typeparam name="T"></typeparam> /// <returns></returns> /// <exception cref="ErrorJsonResultException"></exception> public static async Task <T> GetJsonAsync <T>( IServiceProvider serviceProvider, string url, Encoding encoding = null, Action <string, string> afterReturnText = null) { string returnText = await RequestUtility.HttpGetAsync( serviceProvider, url, encoding).ConfigureAwait(false); afterReturnText?.Invoke(url, returnText); T result = SerializerHelper.GetObject <T>(returnText); return(result); }
/// <summary> /// GET方式请求URL,并返回T类型 /// </summary> /// <typeparam name="T">接收JSON的数据类型</typeparam> /// <param name="serviceProvider">.NetCore 下的服务器提供程序,如果 .NET Framework 则保留 null</param> /// <param name="url"></param> /// <param name="encoding"></param> /// <param name="afterReturnText">返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText</param> /// <returns></returns> public static T GetJson <T>( IServiceProvider serviceProvider, string url, Encoding encoding = null, Action <string, string> afterReturnText = null) { string returnText = RequestUtility.HttpGet( serviceProvider, url, encoding); afterReturnText?.Invoke(url, returnText); T result = SerializerHelper.GetObject <T>(returnText); return(result); }
/// <summary> /// 发起Post请求,可上传文件 /// </summary> /// <typeparam name="T">返回数据类型(Json对应的实体)</typeparam> /// <param name="url">请求Url</param> /// <param name="cookieContainer">CookieContainer,如果不需要则设为null</param> /// <param name="encoding"></param> /// <param name="cer">证书,如果不需要则保留null</param> /// <param name="useAjax"></param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <param name="fileDictionary">需要Post的文件(Dictionary 的 Key=name,Value=绝对路径)</param> /// <param name="postDataDictionary">需要Post的键值对(name,value)</param> /// <param name="afterReturnText">返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText</param> /// <returns></returns> public static T PostFileGetJson <T>(string url, CookieContainer cookieContainer = null, Dictionary <string, string> fileDictionary = null, Dictionary <string, string> postDataDictionary = null, Encoding encoding = null, X509Certificate2 cer = null, bool useAjax = false, Action <string, string> afterReturnText = null, int timeOut = Config.TIME_OUT) { using (MemoryStream ms = new MemoryStream()) { postDataDictionary.FillFormDataStream(ms); //填充formData string returnText = RequestUtility.HttpPost(url, cookieContainer, ms, fileDictionary, null, encoding, cer, useAjax, timeOut); afterReturnText?.Invoke(url, returnText); var result = SerializerHelper.GetObject <T>(returnText); return(result); } }
/// <summary> /// 【异步方法】Form表单Post数据,获取JSON /// </summary> /// <typeparam name="T"></typeparam> /// <param name="url"></param> /// <param name="cookieContainer">CookieContainer,如果不需要则设为null</param> /// <param name="formData">表单数据,Key对应name,Value对应value</param> /// <param name="encoding"></param> /// <param name="certName">证书唯一名称,如果不需要则保留null</param> /// <param name="cer">证书,如果不需要则保留null</param> /// <param name="useAjax">是否使用Ajax请求</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <param name="afterReturnText">返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText</param> /// <returns></returns> public static async Task <T> PostGetJsonAsync <T>(string url, CookieContainer cookieContainer = null, Dictionary <string, string> formData = null, Encoding encoding = null, #if NETSTANDARD2_0 || (NETSTANDARD2_1 || NETCOREAPP3_0) string certName = null, #else X509Certificate2 cer = null, #endif bool useAjax = false, Action <string, string> afterReturnText = null, int timeOut = Config.TIME_OUT) { string returnText = await RequestUtility.HttpPostAsync(url, cookieContainer, formData, encoding, #if NETSTANDARD2_0 || (NETSTANDARD2_1 || NETCOREAPP3_0) certName, #else cer, #endif useAjax, null, timeOut).ConfigureAwait(false);; //SenparcTrace.SendApiLog(url, returnText); afterReturnText?.Invoke(url, returnText); var result = SerializerHelper.GetObject <T>(returnText); return(result); }
/// <summary> /// 发起Post请求,可包含文件流 /// </summary> /// <typeparam name="T">返回数据类型(Json对应的实体)</typeparam> /// <param name="url">请求Url</param> /// <param name="cookieContainer">CookieContainer,如果不需要则设为null</param> /// <param name="fileStream">文件流</param> /// <param name="encoding"></param> /// <param name="certName">证书唯一名称,如果不需要则保留null</param> /// <param name="cer">证书,如果不需要则保留null</param> /// <param name="useAjax">是否使用Ajax请求</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <param name="checkValidationResult">验证服务器证书回调自动验证</param> /// <param name="afterReturnText">返回JSON本文,并在进行序列化之前触发,参数分别为:url、returnText</param> /// <returns></returns> public static T PostGetJson <T>(string url, CookieContainer cookieContainer = null, Stream fileStream = null, Encoding encoding = null, #if NETSTANDARD2_0 || (NETSTANDARD2_1 || NETCOREAPP3_0) string certName = null, #else X509Certificate2 cer = null, #endif bool useAjax = false, bool checkValidationResult = false, Action <string, string> afterReturnText = null, int timeOut = Config.TIME_OUT) { string returnText = RequestUtility.HttpPost(url, cookieContainer, fileStream, null, null, encoding, #if NETSTANDARD2_0 || (NETSTANDARD2_1 || NETCOREAPP3_0) certName, #else cer, #endif useAjax, null, timeOut, checkValidationResult); //SenparcTrace.SendApiLog(url, returnText); afterReturnText?.Invoke(url, returnText); var result = SerializerHelper.GetObject <T>(returnText); return(result); }