WebApi.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using System;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace WebApplication.Controllers
  12. {
  13. public class WebApi
  14. {
  15. /// <summary>
  16. /// Get方式提交数据
  17. /// </summary>
  18. /// <param name="methodname"></param>
  19. /// <returns></returns>
  20. public object retObject(string methodname)
  21. {
  22. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(methodname);
  23. request.Method = "GET";
  24. request.ContentType = "text/html;charset=UTF-8";
  25. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  26. Stream myResponseStream = response.GetResponseStream();
  27. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  28. string retString = myStreamReader.ReadToEnd();
  29. var retObject = (JObject)JsonConvert.DeserializeObject(retString);
  30. return retObject;
  31. }
  32. /// <summary>
  33. /// Post方式提交数据
  34. /// </summary>
  35. /// <param name="url"></param>
  36. /// <param name="body"></param>
  37. /// <returns></returns>
  38. public string HttpPost(string url, string body, string accessToken)
  39. {
  40. Encoding encoding = Encoding.UTF8;
  41. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  42. request.Method = "POST";
  43. //request.Accept = "text/html, application/xhtml+xml, */*";
  44. request.ContentType = "application/json; charset=utf-8";
  45. byte[] buffer = encoding.GetBytes(body);
  46. request.ContentLength = buffer.Length;
  47. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  48. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  49. using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
  50. {
  51. return reader.ReadToEnd();
  52. }
  53. }
  54. /// <summary>
  55. /// http Post请求 发送Json数据
  56. /// </summary>
  57. /// <param name="url"></param>
  58. /// <param name="postData"></param>
  59. /// <param name="headht"></param>
  60. /// <returns></returns>
  61. public string PostJson(string url, string postData, Hashtable headht = null)
  62. {
  63. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  64. request.Method = "POST";
  65. request.ContentType = "application/json;charset=UTF-8";
  66. request.UserAgent = "www.qq.cc/WebRequest";
  67. request.Accept = "application/json";
  68. #region headers设置
  69. if (headht != null)
  70. {
  71. foreach (DictionaryEntry item in headht)
  72. {
  73. request.Headers.Add(item.Key.ToString(), item.Value.ToString());
  74. }
  75. }
  76. #endregion
  77. byte[] paramJsonBytes;
  78. paramJsonBytes = System.Text.Encoding.UTF8.GetBytes(postData);
  79. request.ContentLength = paramJsonBytes.Length;
  80. Stream writer;
  81. try
  82. {
  83. writer = request.GetRequestStream();
  84. }
  85. catch (Exception e)
  86. {
  87. writer = null;
  88. Console.Write("连接服务器失败!");
  89. }
  90. writer.Write(paramJsonBytes, 0, paramJsonBytes.Length);
  91. writer.Close();
  92. HttpWebResponse response;
  93. try
  94. {
  95. response = (HttpWebResponse)request.GetResponse();
  96. }
  97. catch (WebException ex)
  98. {
  99. response = ex.Response as HttpWebResponse;
  100. }
  101. Stream resStream = response.GetResponseStream();
  102. StreamReader reader = new StreamReader(resStream);
  103. string text = reader.ReadToEnd();
  104. return text;
  105. }
  106. /// <summary>
  107. /// Get 方法
  108. /// </summary>
  109. /// <param name="url"></param>
  110. /// <param name="accessToken">Headers 中的秘钥</param>
  111. /// <returns></returns>
  112. public string HttpGet(string url ,string accessToken)
  113. {
  114. string result = string.Empty;
  115. HttpWebRequest reqS = (HttpWebRequest)WebRequest.Create(url);
  116. reqS.Method = "GET";
  117. //添加请求头
  118. reqS.Headers.Add("x-acs-dingtalk-access-token",accessToken);
  119. reqS.ContentType = "application/json; charset=utf-8";
  120. HttpWebResponse resS = (HttpWebResponse)reqS.GetResponse();
  121. Stream myResponseStream = resS.GetResponseStream();
  122. StreamReader streamReader = new StreamReader(myResponseStream);
  123. result = streamReader.ReadToEnd();
  124. streamReader.Close();
  125. myResponseStream.Close();
  126. // 解析返回的json数据(使用 jobject)
  127. JObject theResult = (JObject)JsonConvert.DeserializeObject(result);
  128. return theResult.ToString();
  129. }
  130. /// <summary>
  131. /// Json解析
  132. /// </summary>
  133. /// <param name="result"></param>
  134. /// <returns></returns>
  135. public string[] jsons(string result)
  136. {
  137. JObject jo = JObject.Parse(result);
  138. string[] values1 = jo.Properties().Select(item => item.Value.ToString()).ToArray();
  139. return values1;
  140. }
  141. }
  142. }