PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/Senparc.Weixin.MP/Senparc.Weixin.MP/HttpUtility/Post.cs

https://github.com/mjhuangzk/WeiXinMPSDK
C# | 80 lines | 50 code | 6 blank | 24 comment | 3 complexity | 54a152494df37a37aa64129caeea172e MD5 | raw file
Possible License(s): BSD-2-Clause, BSD-3-Clause
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. using System.Web.Script.Serialization;
  8. using Senparc.Weixin.MP.Entities;
  9. namespace Senparc.Weixin.MP.HttpUtility
  10. {
  11. public static class Post
  12. {
  13. /// <summary>
  14. /// 获取Post结果
  15. /// </summary>
  16. /// <typeparam name="T"></typeparam>
  17. /// <param name="returnText"></param>
  18. /// <returns></returns>
  19. public static T GetResult<T>(string returnText)
  20. {
  21. JavaScriptSerializer js = new JavaScriptSerializer();
  22. if (returnText.Contains("errcode"))
  23. {
  24. //可能发生错误
  25. WxJsonResult errorResult = js.Deserialize<WxJsonResult>(returnText);
  26. if (errorResult.errcode != ReturnCode.请求成功)
  27. {
  28. //发生错误
  29. throw new ErrorJsonResultException(
  30. string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
  31. (int)errorResult.errcode,
  32. errorResult.errmsg),
  33. null, errorResult);
  34. }
  35. }
  36. T result = js.Deserialize<T>(returnText);
  37. return result;
  38. }
  39. /// <summary>
  40. /// 发起Post请求
  41. /// </summary>
  42. /// <typeparam name="T">返回数据类型(Json对应的实体)</typeparam>
  43. /// <param name="url">请求Url</param>
  44. /// <param name="cookieContainer">CookieContainer,如果不需要则设为null</param>
  45. /// <param name="fileName">要发送的文件名,如果不需要上传则设为null</param>
  46. /// <returns></returns>
  47. public static T PostGetJson<T>(string url, CookieContainer cookieContainer = null, string fileName = null, Encoding encoding = null)
  48. {
  49. string returnText = HttpUtility.RequestUtility.HttpPost(url, cookieContainer, fileName, encoding);
  50. var result = GetResult<T>(returnText);
  51. return result;
  52. }
  53. /// <summary>
  54. /// 发起Post请求
  55. /// </summary>
  56. /// <typeparam name="T">返回数据类型(Json对应的实体)</typeparam>
  57. /// <param name="url">请求Url</param>
  58. /// <param name="cookieContainer">CookieContainer,如果不需要则设为null</param>
  59. /// <param name="fileStream">文件流</param>
  60. /// <returns></returns>
  61. public static T PostGetJson<T>(string url, CookieContainer cookieContainer = null, Stream fileStream = null, Encoding encoding = null)
  62. {
  63. string returnText = HttpUtility.RequestUtility.HttpPost(url, cookieContainer, fileStream, false, encoding);
  64. var result = GetResult<T>(returnText);
  65. return result;
  66. }
  67. public static T PostGetJson<T>(string url, CookieContainer cookieContainer = null, Dictionary<string, string> formData = null, Encoding encoding = null)
  68. {
  69. string returnText = HttpUtility.RequestUtility.HttpPost(url, cookieContainer, formData, encoding);
  70. var result = GetResult<T>(returnText);
  71. return result;
  72. }
  73. }
  74. }