Java POST请求案例
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<直接上代码>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Person
public class Person {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
PersonReq
public class PersonReq {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
DemoService
package com.demo; import org.springframework.stereotype.Service; import java.util.ArrayList;
import java.util.List; @Service
public class DemoService {
/**
* 获取列表
*
* @param personReq 对象参数
* @return
*/
public List<Person> personList(PersonReq personReq) {
List<Person> list = new ArrayList<>();
Person person = new Person();
person.setAge(personReq.getAge());
person.setName(personReq.getName());
Person person1 = new Person();
person1.setAge(20);
person1.setName("2诗");
list.add(person);
list.add(person1);
return list;
}
}
DemoController
package com.demo; import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
@RequestMapping("/demo")
public class DemoController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
DemoService demo; @RequestMapping("/list")
public List<Person> getPerson(@RequestBody PersonReq personReq) {
List<Person> people = demo.personList(personReq);
logger.info("list:{}", JSON.toJSONString(people));
return people;
}
}
Application
启动项目,然后下一步,外部 就可以开始调接口了
package com; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableScheduling
@EnableSwagger2
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
HttpClients
package com.demo; import com.alibaba.fastjson.JSONObject; import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL; /**
* HTTP 工具类
*/
public class HttpClients {
/**
* 发送POST请求
*
* @param url 请求URL
* @param param 请求参数
* @return
*/
private String sendPost(String url, String param) { return null;
} public static String sendPost(String url, String request, String ContentType) {
String result = ""; try {
//存储请求
PrintWriter out; //存储接口返回的response
BufferedReader in; // 获取访问地址
//得到网络访问对象java.net.HttpURLConnection
URL realUrl = new URL(url); //设置请求参数,以流的形式连接
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); //设置http的请求头
conn.setRequestProperty("accept", "*/*"); //设置请求的Contenttype
if (ContentType == null || ContentType.equals("")) {
if (isJson(request)) {
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
} else {
if (url.toLowerCase().contains(".asmx")) {
conn.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
} else {
conn.setRequestProperty("Content-Type", "application/xml;charset=utf-8");
}
}
} else {
conn.setRequestProperty("Content-Type", ContentType);
} //特殊处理:如果是1.0的请求则进一步具体设定setRequestProperty,并对xml格式做优化
if (url.toLowerCase().contains(".asmx")) {
if (url.toLowerCase().contains("datacomparews")) {
conn.setRequestProperty("SOAPAction", "http://tempuri.org/DataTableCompare");
String Xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:Body>";
Xml += request.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
Xml += "</soap:Body></soap:Envelope>";
request = Xml;
} else {
String Xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:Body><Request xmlns=\"http://tempuri.org/\"><requestXML>" + "<![CDATA[";
Xml += request.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
Xml += "]]></requestXML></Request></soap:Body></soap:Envelope>";
request = Xml;
conn.setRequestProperty("SOAPAction", "http://tempuri.org/Request");
}
} //keep-alive 发出的请求建议服务器端保留连接,这样下次向同一个服务器发请求时可以走同一个连接
conn.setRequestProperty("connection", "Keep-Alive"); //设置请求的浏览器相关属性
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //设定接受的返回流字节码为UTF-8
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("Charset", "utf-8"); //设置超时时间,如果未设置超时时间,但是访问超时了就会一直卡在这里
conn.setConnectTimeout(50000 * 12);
conn.setReadTimeout(50000 * 12); //设置是否向HttpURLConnection输出,默认为false,发送post请求的不啊必须设置为true
conn.setDoOutput(true); //设置是否从httpUrlConnection读入,默认为true,不设置也可以
conn.setDoInput(true); //处理输入请求 ,设置请求正文,即要提交的数据
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")); // 写入参数到请求中
out.print(request); //flush输出流的缓冲
out.flush(); //处理输出接口,远程对象变为可用
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
result = e.getMessage();
e.printStackTrace();
}
return result;
} /**
* 判断字符串是不是json格式
*
* @param request
* @return
*/
private static boolean isJson(String request) {
try {
JSONObject.parseObject(request);
return true;
} catch (Exception e) {
return false;
}
}
}
Demo1Controller
package com.demo; import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/demo1")
public class Demo1Controller {
private static final Logger logger = LoggerFactory.getLogger(Demo1Controller.class); @RequestMapping("/list")
public String getPerson1() {
PersonReq personReq = new PersonReq();
personReq.setAge(10);
personReq.setName("1诗");
String url = "http://localhost:8080/demo/list";
String result = HttpClients.sendPost(url, JSON.toJSONString(personReq), "");
logger.info(" getPerson1 list:{}", result);
return result;
}
//mian方法测试
public static void main(String[] args) {
PersonReq personReq = new PersonReq();
personReq.setAge(10);
personReq.setName("1诗");
String url = "http://localhost:8080/demo/list";
String result = HttpClients.sendPost(url, JSON.toJSONString(personReq), "");
logger.info("result:{}", result);
}
}

<<<<<<<<<<<<<<<OK>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Java POST请求案例的更多相关文章
- Post的请求案例
1.简单的post请求案例 $.post(rootPath+"/jasframework/loginLog/getStatisticsInfoByUserId.do",functi ...
- Java HTTP请求
注意:java http请求要放在 try catch里面,该过程是一个阻塞过程,所以需要新建一个线程进行处理 try { HttpPost request = new HttpPost(URL); ...
- java读取请求中body数据
java读取请求中body数据 /** * 获取request中body数据 * * @author lifq * * 2017年2月24日 下午2:29:06 * @throws IOExcepti ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求 Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...
- 解决Fiddler不能监听Java HttpURLConnection请求的方法
在默认情况下,Fiddler不能监听Java HttpURLConnection请求.究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是 在应用程 ...
- 前端笔记之微信小程序(三)GET请求案例&文件上传和相册API&配置https
一.信息流小程序-GET请求案例 1.1服务端接口开发 一定要养成接口的意识,前端单打独斗出不来任何效果,必须有接口配合,写一个带有分页.关键词查询的接口: 分页接口:http://127.0.0.1 ...
- 使用Fiddler监听java HttpURLConnection请求
使用Fiddler监听java HttpURLConnection请求
- java判断请求是否ajax异步请求
java判断请求是否ajax异步请求 解决方法: if (request.getHeader("x-requested-with") != null && re ...
随机推荐
- nohup命令重定向标准输出和错误输出
命令:command > /dev/null 2>&1 & 输出到/dev/null表示输出重定向到黑洞,即输出内容不打印到屏幕上,null是/dev下空设备文件. &g ...
- dubbo学习(四)配置dubbo 注解方式配置
provider(生产者) service注解暴露服务 /** * 用户管理实现类 */ @Service //用的dubbo的注解,表明这是一个分布式服务 @Component //注册为sprin ...
- svn的使用学习
一:安装 1.svn安装包,语言包下载 地址:https://pan.baidu.com/s/1PFM7ya_hNJM-v979KgCpgA 提取码:mpxq 2.运行下载的TortoiseSVN程序 ...
- 《Redis入门指南》笔记
第1章 简介 1.1 历史与发展 2008年 意大利创业公司创始人因对mysql性能不满意,于是他决定开发redis. 2009年 redis初版由他一个人开发完成.redis是"remot ...
- pwnable.kr-blackjack-witeup
这是个人对程序逻辑的分析总结. 真的很巧很神奇,理解完程序的逻辑,不知道怎么破解.看了一眼题解,忽然懂了,好神奇哦. 题目说,要获得1000000才能获得flag.经过多次试玩和在分析程序的逻辑,知道 ...
- 一道无限极类 PHP 试题
记某次笔试碰到的一道无限极类试题,当时时间比较紧(满满六页试题),还是手写代码,所以最终写的有点错误.记不住原题了,但是要求都知道,特此记录下来! 试题 有下面一个数组: $arr = [ '小红' ...
- 基础Web漏洞-SQL注入入门(手工注入篇)
一.什么是SQL注入 SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL.而SQL注入是将Web页面的原URL.表单域或数据包输入的参数,修改拼接成SQ ...
- 修改默认配置文件.android.gradle.androidstudio到其他目录
.android 这个文件夹主要是用来存放模拟器的,是占用空间最大的一个,如果你没有使用它的模拟器,可以直接把这个文件夹删除.因为我建立了两个x86的模拟器,吃掉了我20G的空间.果断搬走. 复制当前 ...
- Python-鸡兔同笼问题
鸡兔同笼问题 -- 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? --鸡和兔在一个笼子里,从上面数,有35个头:从下面数,有94只脚.问笼中各有几只鸡和兔 如何逻辑整理? -- 鸡头和兔子 ...
- 关于 K210 MaixPy 的 I2C 读取设备,搜索不到设备,通信失败的一些原因以及解决方案。
近来对 amigo 开发期间的遇到 I2C 问题做一下总结. 我们发现有一些 I2C 设备搜索不到,主要原因是 DATA 的信号衰减,也可能是 I2C 的总线被拉住了. 软件层面的问题 例如在实现 A ...