/Senparc.Weixin.MP/Senparc.Weixin.MP/HttpUtility/Post.cs
C# | 80 lines | 50 code | 6 blank | 24 comment | 3 complexity | 54a152494df37a37aa64129caeea172e MD5 | raw file
Possible License(s): BSD-2-Clause, BSD-3-Clause
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Web.Script.Serialization;
- using Senparc.Weixin.MP.Entities;
- namespace Senparc.Weixin.MP.HttpUtility
- {
- public static class Post
- {
- /// <summary>
- /// 获取Post结果
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="returnText"></param>
- /// <returns></returns>
- public static T GetResult<T>(string returnText)
- {
- JavaScriptSerializer js = new JavaScriptSerializer();
- if (returnText.Contains("errcode"))
- {
- //可能发生错误
- WxJsonResult errorResult = js.Deserialize<WxJsonResult>(returnText);
- if (errorResult.errcode != ReturnCode.请求成功)
- {
- //发生错误
- throw new ErrorJsonResultException(
- string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
- (int)errorResult.errcode,
- errorResult.errmsg),
- null, errorResult);
- }
- }
- T result = js.Deserialize<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="fileName">要发送的文件名,如果不需要上传则设为null</param>
- /// <returns></returns>
- public static T PostGetJson<T>(string url, CookieContainer cookieContainer = null, string fileName = null, Encoding encoding = null)
- {
- string returnText = HttpUtility.RequestUtility.HttpPost(url, cookieContainer, fileName, encoding);
- var result = GetResult<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>
- /// <returns></returns>
- public static T PostGetJson<T>(string url, CookieContainer cookieContainer = null, Stream fileStream = null, Encoding encoding = null)
- {
- string returnText = HttpUtility.RequestUtility.HttpPost(url, cookieContainer, fileStream, false, encoding);
- var result = GetResult<T>(returnText);
- return result;
- }
- public static T PostGetJson<T>(string url, CookieContainer cookieContainer = null, Dictionary<string, string> formData = null, Encoding encoding = null)
- {
- string returnText = HttpUtility.RequestUtility.HttpPost(url, cookieContainer, formData, encoding);
- var result = GetResult<T>(returnText);
- return result;
- }
- }
- }