说明

模拟http请求,用于在服务端调用第三方api,抓取网页数据等等

主要方法

HttpUtil.Request(String method, String url,ZmHash query,ZmHash methodData,ZmHash header,ZmHash config);

Request 发起http请求

返回值:ZmReturnMsg ZmReturnMsg对象 msgStatus为ok时候代表请求成功,否则请求失败

method 请求方式 GET POST String,

url 请求的url地址 String,

query 请求url参数 键值对 执行时会拼接到url?后面 ZmHash,

methodData 请求方式数据 主要包含以下内容 type:请求子类型,可以传入 json、xml、plain、x-www-form-urlencoded、form-data、fileDown(文件下载)

也可以为空或者none data:post传递的内容 对于x-www-form-urlencoded、form-data传入ZmHash键值对

其它为字符串 files:上传文件时候传递文件数据的键值对列表ZmHashList filePath:下载文件保存的路径 ZmHash,

header 请求头部数据 ZmHash,

config 请求配置数据 ZmHash

示例

  1. [RequestMapping("doHttpGet")]
  2. @ResponseBody
  3. public ZmReturnMsg doHttpGet() {
  4. ZmReturnMsg mReturnMsg = ZmReturnMsg.ErrorMsg("doHttpGet");
  5. return mReturnMsg;
  6. }
  7. /**
  8. *演示Get方式的http请求
  9. */
  10. [RequestMapping("httpGet")]
  11. @ResponseBody
  12. public ZmReturnMsg httpGet ()
  13. {
  14. ZmActiveRequest zmRequest = base.getActiveRequest();
  15. String serverUrl =zmRequest.getRequestServerUrl();
  16. String url = serverUrl+ "/demo/design/httputil/doHttpGet";
  17. ZmHash query = new ZmHash();
  18. query.Add("ajax",1);
  19. ZmHash methodData = new ZmHash();
  20. ZmHash header = new ZmHash();
  21. ZmHash config = new ZmHash();
  22. //Get请求调用doHttpGet
  23. ZmReturnMsg mReturnMsg = HttpUtil.Request("GET", url, query, methodData, header, config);
  24. return mReturnMsg;
  25. }
  26. [RequestMapping("doPostJson")]
  27. [HttpPost]
  28. @ResponseBody
  29. public ZmReturnMsg doPostJson([RequestBody] DemoStudent student)
  30. {
  31. String StudentName=student.StudentName;
  32. ZmReturnMsg mReturnMsg = ZmReturnMsg.ErrorMsg("doPostJson:"+StudentName);
  33. return mReturnMsg;
  34. }
  35. /**
  36. * 演示Get Json方式的http请求
  37. */
  38. [RequestMapping("postJson")]
  39. @ResponseBody
  40. public ZmReturnMsg postJson ()
  41. {
  42. ZmActiveRequest zmRequest = base.getActiveRequest();
  43. String serverUrl =zmRequest.getRequestServerUrl();
  44. String url = serverUrl+ "/demo/design/httputil/doPostJson";
  45. ZmHash query = new ZmHash();
  46. query.Add("ajax",1);
  47. ZmHash methodData = new ZmHash();
  48. methodData.Add("type","json");
  49. ZmHash student=new ZmHash();
  50. student.Add("studentName","testDemoStudent");
  51. student.Add("studentId",5);
  52. student.Add("studentAge",18);
  53. String data=JsonHelper.HashToJson(student);
  54. methodData.Add("data",data);
  55. ZmHash header = new ZmHash();
  56. ZmHash config = new ZmHash();
  57. ////Post Json方式提交数据
  58. ZmReturnMsg mReturnMsg = HttpUtil.Request("POST", url, query, methodData, header, config);
  59. return mReturnMsg;
  60. }
  61. [RequestMapping("doPostFormUrlencoded")]
  62. [HttpPost]
  63. @ResponseBody
  64. public ZmReturnMsg doPostFormUrlencoded()
  65. {
  66. ZmActiveRequest zmRequest = base.getActiveRequest();
  67. String studentName=zmRequest.QueryString("studentName");
  68. ZmReturnMsg mReturnMsg = ZmReturnMsg.ErrorMsg("doPostFormUrlencoded:"+studentName);
  69. return mReturnMsg;
  70. }
  71. /**
  72. *演示Post x-www-form-urlencoded方式的http请求
  73. */
  74. [RequestMapping("postFormUrlencoded")]
  75. @ResponseBody
  76. public ZmReturnMsg postFormUrlencoded ()
  77. {
  78. ZmActiveRequest zmRequest = base.getActiveRequest();
  79. String serverUrl =zmRequest.getRequestServerUrl();
  80. String url = serverUrl+ "/demo/design/httputil/doPostFormUrlencoded";
  81. ZmHash query = new ZmHash();
  82. query.Add("ajax",1);
  83. ZmHash methodData = new ZmHash();
  84. methodData.Add("type","x-www-form-urlencoded");
  85. methodData.Add("data","studentName=testDemoStudent&studentAge=18");
  86. ZmHash header = new ZmHash();
  87. ZmHash config = new ZmHash();
  88. //Post x-www-form-urlencoded方式的http请求
  89. ZmReturnMsg mReturnMsg = HttpUtil.Request("POST", url, query, methodData, header, config);
  90. return mReturnMsg;
  91. }
  92. /**
  93. *演示下载文件
  94. */
  95. [RequestMapping("downFile")]
  96. @ResponseBody
  97. public ZmReturnMsg downFile ()
  98. {
  99. String url ="http://www.qiafa.com/hlt.rar";
  100. ZmHash query = new ZmHash();
  101. query.Add("ajax",1);
  102. ZmHash methodData = new ZmHash();
  103. methodData.Add("type","fileDown");
  104. String filePath =ZmFile.Combine("C:","Users","zjx","Desktop","tmp","test","hlt.rar");
  105. methodData.Add("filePath",filePath);
  106. ZmHash header = new ZmHash();
  107. ZmHash config = new ZmHash();
  108. //下载文件
  109. ZmReturnMsg mReturnMsg = HttpUtil.Request("GET", url, query, methodData, header, config);
  110. return mReturnMsg;
  111. }
  112. /**
  113. *上传文件
  114. */
  115. [RequestMapping("uploadFile")]
  116. @ResponseBody
  117. public ZmReturnMsg uploadFile()
  118. {
  119. ZmActiveRequest zmRequest = base.getActiveRequest();
  120. String serverUrl =zmRequest.getRequestServerUrl();
  121. String url = serverUrl+ "/SysRepository/upload";
  122. ZmHash query = new ZmHash();
  123. query.Add("ajax",1);
  124. query.Add("FileType","file");
  125. query.Add("FormSNO","rich");
  126. query.Add("sno","202212");
  127. query.Add("FieldSNO","17");
  128. query.Add("store","file");
  129. query.Add("access_token","123456");
  130. ZmHash methodData = new ZmHash();
  131. methodData.Add("type","form-data");
  132. ZmHashList files=new ZmHashList();
  133. ZmHash file = new ZmHash();
  134. String filePath =ZmFile.Combine("C:","icon.png");
  135. file.Add("filePath",filePath);
  136. file.Add("fileName","icon.png");
  137. files.Add(file);
  138. methodData.Add("files",files);
  139. ZmHash header = new ZmHash();
  140. ZmHash config = new ZmHash();
  141. //上传文件
  142. ZmReturnMsg mReturnMsg = HttpUtil.Request("POST", url, query, methodData, header, config);
  143. return mReturnMsg;
  144. }
  145. [RequestMapping("doWithHttpHeader")]
  146. @ResponseBody
  147. public ZmReturnMsg doWithHttpHeader() {
  148. ZmActiveRequest zmRequest = base.getActiveRequest();
  149. String ua=zmRequest.GetUserAgent();
  150. String referer = zmRequest.GetReferer();
  151. ZmReturnMsg mReturnMsg=ZmReturnMsg.ErrorMsg("doWithHttpHeader:"+referer+" "+ ua);
  152. return mReturnMsg;
  153. }
  154. /**
  155. *添加请求的 http头
  156. */
  157. [RequestMapping("withHttpHeader")]
  158. @ResponseBody
  159. public ZmReturnMsg withHttpHeader ()
  160. {
  161. ZmActiveRequest zmRequest = base.getActiveRequest();
  162. String serverUrl =zmRequest.getRequestServerUrl();
  163. String url = serverUrl+ "/demo/design/httputil/doWithHttpHeader";
  164. ZmHash query = new ZmHash();
  165. query.Add("ajax",1);
  166. ZmHash methodData = new ZmHash();
  167. ZmHash header = new ZmHash();
  168. header.Add("Referer", "http://www.xxx.com");
  169. header.Add("UserAgent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36");
  170. ZmHash config = new ZmHash();
  171. //添加了 Referer 和ua 并发起http请求
  172. ZmReturnMsg mReturnMsg = HttpUtil.Request("GET", url, query, methodData, header, config);
  173. return mReturnMsg;
  174. }
  175. [RequestMapping("doWithCookia")]
  176. @ResponseBody
  177. public ZmReturnMsg doWithCookia() {
  178. ZmActiveRequest zmRequest = base.getActiveRequest();
  179. String myCookieVal= zmRequest.GetCookie("myCookie");
  180. ZmReturnMsg mReturnMsg=ZmReturnMsg.ErrorMsg("doWithCookia:"+ myCookieVal);
  181. //同时设置了 http请求cookie
  182. zmRequest.SetCookie("responseCookia", "888");
  183. zmRequest.SetCookie("nextCookia", "999");
  184. return mReturnMsg;
  185. }
  186. /**
  187. *添加cookie的 http请求
  188. */
  189. [RequestMapping("withCookia")]
  190. @ResponseBody
  191. public ZmReturnMsg withCookia ()
  192. {
  193. ZmActiveRequest zmRequest = base.getActiveRequest();
  194. String serverUrl =zmRequest.getRequestServerUrl();
  195. String url = serverUrl+ "/demo/design/httputil/doWithCookia";
  196. ZmHash query = new ZmHash();
  197. query.Add("ajax",1);
  198. ZmHash methodData = new ZmHash();
  199. ZmHash header = new ZmHash();
  200. Boolean useCookieObj=false;
  201. //添加 cookie的两种方式 一种是使用对象 另外一种是用key=val的形式
  202. if(useCookieObj){
  203. ZmHashList CookieObj=new ZmHashList();
  204. ZmHash myCookie = new ZmHash();
  205. myCookie.Add("name","myCookie");
  206. myCookie.Add("value","123");
  207. CookieObj.Add(myCookie);
  208. header.Add("CookieObj",CookieObj);
  209. }
  210. else{
  211. header.Add("Cookie", "myCookie=123");
  212. }
  213. ZmHash config = new ZmHash();
  214. //请求配置里面接收服务端响应过来的cookie
  215. config.Add("GetResponseCookie",true);
  216. //发起有cookie的请求
  217. ZmReturnMsg mReturnMsg = HttpUtil.Request("GET", url, query, methodData, header, config);
  218. return mReturnMsg;
  219. }

示例视频包含的内容

模拟http请求的基本操作

调用第三方api

普通的get请求

post json请求,post x-www-form-urlencoded 请求

请求添加 http头 refer ua等信息

上传和下载文件

请求添加cookie信息,获取服务端返回的cookie信息