package com.nxt.datacenter.utils;/*** 文件描述** @author: maomi* @date: 2019/5/31*/import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 用于模拟HTTP请求中GET/POST方式* @author landa**/
public class HttpUtils {/*** 发送GET请求** @param url        目的地址* @param parameters 请求参数,Map类型。* @return 远程响应结果*/public static String get(String url, Map<String, String> parameters) {String result = "";// 读取响应输入流BufferedReader in = null;// // 存储参数StringBuffer sb = new StringBuffer();// // 编码之后的参数String params = "";try {// 编码请求参数if (parameters.size() == 1) {for (String name : parameters.keySet()) {sb.append(name).append("=").append(java.net.URLEncoder.encode(parameters.get(name),"UTF-8"));}params = sb.toString();} else {for (String name : parameters.keySet()) {sb.append(name).append("=").append(java.net.URLEncoder.encode(parameters.get(name),"UTF-8")).append("&");}String temp_params = sb.toString();params = temp_params.substring(0, temp_params.length() - 1);}String full_url = url + "?" + params;System.out.println(full_url);// 创建URL对象java.net.URL connURL = new java.net.URL(full_url);// 打开URL连接java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL.openConnection();// 设置通用属性httpConn.setRequestProperty("Accept", "*/*");httpConn.setRequestProperty("Connection", "Keep-Alive");httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");// 建立实际的连接httpConn.connect();// 响应头部获取Map<String, List<String>> headers = httpConn.getHeaderFields();// 遍历所有的响应头字段for (String key : headers.keySet()) {System.out.println(key + "\t:\t" + headers.get(key));}// 定义BufferedReader输入流来读取URL的响应,并设置编码方式in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));String line;// 读取返回的内容while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {e.printStackTrace();} finally {try {if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** 发送POST请求** @param url        目的地址* @param parameters 请求参数,Map类型。* @return 远程响应结果*/public static String post(String url, Map<String, String> parameters) {String result = "";// 返回的结果BufferedReader in = null;// 读取响应输入流PrintWriter out = null;StringBuffer sb = new StringBuffer();// 处理请求参数String params = "";// 编码之后的参数try {// 编码请求参数if (parameters.size() == 1) {for (String name : parameters.keySet()) {sb.append(name).append("=").append(java.net.URLEncoder.encode(parameters.get(name),"UTF-8"));}params = sb.toString();} else {for (String name : parameters.keySet()) {sb.append(name).append("=").append(java.net.URLEncoder.encode(parameters.get(name),"UTF-8")).append("&");}String temp_params = sb.toString();params = temp_params.substring(0, temp_params.length() - 1);}// 创建URL对象java.net.URL connURL = new java.net.URL(url);// 打开URL连接java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL.openConnection();// 设置通用属性httpConn.setRequestProperty("Accept", "*/*");httpConn.setRequestProperty("Connection", "Keep-Alive");httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");// 设置POST方式httpConn.setDoInput(true);httpConn.setDoOutput(true);// 获取HttpURLConnection对象对应的输出流out = new PrintWriter(httpConn.getOutputStream());// 发送请求参数out.write(params);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应,设置编码方式in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));String line;// 读取返回的内容while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {e.printStackTrace();} finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** 主函数,测试请求** @param args*/public static void main(String[] args) {Map<String, String> parameters = new HashMap<String, String>();parameters.put("AREA1", "sarin");parameters.put("STARTTIME", "2019-05-31");String result = post("http://jxtz.apn110.com/tuzaiChart/meatCert/meatCertData", parameters);System.out.println(result);}
}
package com.nxt.datacenter.task;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.nxt.datacenter.config.FuwuConfig;
import com.nxt.datacenter.entity.FuwuClientEntity;
import com.nxt.datacenter.service.IFuwuClientService;
import com.nxt.datacenter.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;/*** Cron表达式参数分别表示:** 秒(0~59) 例如0/5表示每5秒* 分(0~59)* 时(0~23)* 日(0~31)的某天,需计算* 月(0~11)* 周几( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)* @author liuliang* @date 2019-05-30*/
@Slf4j
@Component
@Configuration
@EnableScheduling  //zhuanjiafuwuUrl
public class FuwuClientTask {@Autowiredprivate FuwuConfig zhuanjiafuwuUrl;@Autowiredprivate IFuwuClientService fuwuClientService;//@Scheduled(cron = "0 * * * * ?") //方便调试//@Scheduled(cron = "0/10 * * * * ? ") 测试10秒定时任务@Scheduled(cron = "0 * * * * ?")public void perDay() {log.info("每天晚上1点任务-----------(12316专家服务)开始");//12316专家服务:通过url拿数据String expent = this.fuwuGetUrldata();//12316专家服务:数据存入表中this.fuwuSetTabledata(expent);}//12316专家服务:每天定时更新一次public String fuwuGetUrldata(){//拿到的数据String ResultString="";try {String uboxSize = "";//每次请求2页数据for(Integer s = 1; s<3; s++){Map<String, String> prop = new HashMap<String, String>();prop.put("pageNum",String.valueOf(s));String material =  HttpUtils.get(zhuanjiafuwuUrl.getZhuanjiafuwuUrl(),prop);if(material==null && material.length()==0 ){return null;}//System.out.println("打印数据:" + material);//将字符串转JSONJSONObject jsStr = JSONObject.parseObject(material);//定位到data内容uboxSize = jsStr.getString("data");uboxSize = uboxSize.substring(1,uboxSize.length()-1);uboxSize += ",";ResultString+=uboxSize;}ResultString ="["+ ResultString.substring(0,ResultString.length()-1)+"]";//System.out.println("打印数据:" + ResultString);} catch (Exception e) {log.error("12316专家服务, 取数据错误:", e);}return ResultString;}public void fuwuSetTabledata(String newData){try{if(newData != null && newData.length() != 0) {JSONArray json = JSONArray.parseArray(newData);//清空老数据fuwuClientService.removeTableIsOld();for (Object obj : json) {FuwuClientEntity fuwuClientEntity = new FuwuClientEntity();JSONObject jo = (JSONObject) obj;fuwuClientEntity.setId(Long.valueOf(jo.getString("id")));fuwuClientEntity.setHinfo(jo.getString("hinfo"));fuwuClientEntity.setTname(jo.getString("tname"));fuwuClientEntity.setBiaoqian(jo.getString("biaoqian"));fuwuClientEntity.setTbiaoqian(jo.getString("tbiaoqian"));fuwuClientEntity.setHtime(jo.getString("htime"));fuwuClientEntity.setHtype(jo.getString("htype"));if (fuwuClientEntity.getHinfo() != null && fuwuClientEntity.getHinfo().length() > 0) {Boolean bol = fuwuClientService.save(fuwuClientEntity);if (bol) {log.info("成功存储12316数据:" + fuwuClientEntity);} else {log.info("存储失败12316数据:" + fuwuClientEntity);}}}}}catch (Exception e) {log.error("12316专家服务, 存数据错误:", e);}}
}

application.yml

datacenter:# 服务配置fuwu:# 12316专家咨询服务, 每天定时更新一次 - urlzhuanjiafuwu_url: http://rmt.118.aoyacms.com/plugin/aoya/notebook/wentilistapi.php
package com.nxt.datacenter.config;import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @author: liuliang* @date: 2019/5/31*/
@Slf4j
@Component
@Data
public class FuwuConfig {@Value("${datacenter.fuwu.zhuanjiafuwu_url}")private String zhuanjiafuwuUrl;
}

JAVA模拟HTTP请求中GET/POST方式相关推荐

  1. curl命令java_上curl java 模拟http请求

    最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接. java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次 ...

  2. java模拟HTTP请求(集合了网上搜来的各种)

    Java发送http请求 (get 与 post方法请求) Java发送http请求 (get 与post方法请求),以下代码经本人亲自调试可用!可以直接使用之. 注意:通过BufferedReade ...

  3. Java 实现 HTTP 请求的三种方式

    除了本文推荐的几种方式,强烈推荐 OkHttp 目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较 ...

  4. java实现HTTP请求的三种方式

    From: https://www.cnblogs.com/hhhshct/p/8523697.html 目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的 ...

  5. Java 实现HTTP请求的四种方式总结

    前言 在日常工作和学习中,有很多地方都需要发送HTTP请求,本文以Java为例,总结发送HTTP请求的多种方式 HTTP请求实现过程 GET ▶️①.创建远程连接 ▶️②.设置连接方式(get.pos ...

  6. Java模拟http请求

    Java实现http请求主要有3种方式:URLConnection.HttpURLConnection.HttpClient 一 URLConnection     抽象类,属于Java发送http请 ...

  7. Java模拟Http请求远程接口

    最近业务需要请求远程API接口,并返回相应的数据,同步到公司的服务器.因此编写了下面两个方法,主要是用Java.net.URL模拟http请求,主要写了POST和GET两个方法. 1.GET请求 /* ...

  8. java kryo 序列化_java中的序列化方式及dubbo使用kryo序列化

    java中的序列化方式: 1. 自带序列化  ObjectInputSteam. ObjectOutStream等 2. hession2 3. json ,xml等格式 4.kryo 5.FST - ...

  9. java读取http请求中的body

    来源:http://blog.sina.com.cn/s/blog_49cc672f01018fik.html 在http请求中,有Header和Body之分,读取header使用request.ge ...

最新文章

  1. 亲身经历揭露淘宝上主板交换的陷阱
  2. C#中Trim()、TrimStart()、TrimEnd()的错误认识
  3. 小甲鱼python课后题007_[Python]小甲鱼Python视频第007-008课(了不起的分支和循环)课后题及参考解答...
  4. 【学习笔记】网络层——IPv6:地址表示、IPv4的对比、IPv4过渡到IPv6、基本地址类型等
  5. oracle中dbms_DBMS中的功能依赖性和属性关闭
  6. java 文件流 重写_java中关于文件流的总结
  7. CygWin遇到WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法
  8. 均匀带电的无限大平面划成无限长直线积分计算场强
  9. Android进阶笔记18:Android 获取Button的高度、宽度、坐标值
  10. win10下安装7zip
  11. R语言回归及混合效应模型及贝叶斯实现
  12. html实现好看的年会抽奖(附源码)
  13. DMSP/OLS夜间灯光遥感影像数据概述
  14. iTunes现在已在Microsoft Store中
  15. 终于等到了!十位Java架构师整理的“阿里P7”养成计划
  16. 520特别企划 | Z世代进入婚恋市场,婚恋交友行业会有什么变化?​
  17. java并发包详解(jdk7)
  18. Python实现计算圆周率π的值到任意位的方法示例
  19. 猫盘群晖DSM7.0三合一修复脚本
  20. std::lock_guard的原理和应用

热门文章

  1. 蚂蚁金服CTO程立:技术的价值与意义_在我看来是这样的
  2. 关于typedef,指针数组和数组指针,指针函数的说明
  3. 圣诞树html实现代码
  4. 【HTML】重点知识内容~快速上手
  5. 生信软件 | STAR(测序序列与参考序列比对)
  6. [5] Java中的static关键字
  7. ft232h引脚_基于FT2232H的USB-RS232转换模块设计
  8. 产业区块链一周动态丨蚂蚁集团计划上市,苏州成立10亿元区块链基金
  9. 海思平台OSD的实现(1)
  10. 电容器和电池有什么不同?