《Java知识应用》Java通过Get和Post实现HTTP请求。
Http请求,是非常常见并且的数据交互方式。
下面讲解:Get和Post的两个实战案例。
用于测试的Action(controller)。
@RequestMapping(value = "getData.json")
public @ResponseBody
ServerResponse getData(HttpSession session,@RequestBody People people){
return new ServerResponse(people);
}
案例(post):
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map; public class Main {
private static final String URL= "http://XXX.XXX.XXX.XXX:XXXX/getData.json"; public static void main(String[] args) {
String url = URL;
Map map = new HashMap();
map.put("name","李磊");
map.put("age","18");
JSONObject json = new JSONObject(map);
JSONObject res = PostInterface.postJson(url,json);
System.out.println(res.toString());
}
}
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject; import java.nio.charset.Charset; /**
* 请求类
*/
public class PostInterface { public static JSONObject postJson(String url, JSONObject json) {
CloseableHttpClient httpclient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url);
JSONObject response = null;
try {
//编码使用UTF-8,避免中文乱码
StringEntity s = new StringEntity(json.toString(), Charset.forName("GBK"));
s.setContentType("application/json");//发送json数据需要设置contentType
post.setEntity(s); HttpResponse res = httpclient.execute(post);
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
String result = EntityUtils.toString(res.getEntity());// 返回json格式:
response = new JSONObject(result);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return response;
}
}
运行结果:
用于测试的Action(controller)。
@RequestMapping(value = "getData.json")
public @ResponseBody
ServerResponse getData(HttpSession session, String flag){
String str;
if(!StringUtils.isBlank(flag)){
str = "您传的是“"+flag+"”";
}else{
str = "您传的是空";
}
return new ServerResponse(str);
}
案例(get):
public class Main {
private static final String URL= "http://XXX.XXX.XXX.XXX:XXXX/getData.json"; public static void main(String[] args) {
String url = URL;
String res = PostInterface.doGet(url+"?flag=1","utf-8");
System.out.println(res.toString());
}
}
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils; /**
* 请求类
*/
public class PostInterface { public static String doGet(String url,String charset){
if(null == charset){
charset = "utf-8";
}
CloseableHttpClient httpclient = HttpClientBuilder.create().build();
HttpGet httpGet = null;
String result = null;
try {
httpGet = new HttpGet(url);
HttpResponse response = httpclient.execute(httpGet);
if(response != null){
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
运行结果:
如果在执行案例过程遇到问题:可以加群沟通,或者下面留言
《Java知识应用》Java通过Get和Post实现HTTP请求。的更多相关文章
- Java知识体系
Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...
- 2016年6月20日 JAVA知识框架
基于 J2EE 列举的知识架构,大体列举开发基础知识.帮助我随时查缺补漏,奉行好记性不如烂笔头.写了这该随笔,以便后续查询. 1 JAVA简介 2 JAVA编程环境 3 JAVA基本编程结构 4 ...
- Java知识总结
...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- Java知识体系纲要
最近一段时间,把Java主要涉及到的大概念都大致学习了一遍,为了让自己能够更好地形成对Java知识体系的整体把握,先把学过的知识点添加到自己画的思维导图上. 整个Java知识体系的划分,我自己主要将它 ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- Java开发知识之Java中的集合Set接口以及子类应用
---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- Java开发知识之Java中的泛型
Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...
- Java开发知识之Java的枚举
Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...
随机推荐
- electron——dialog(实现导出excel)
背景 前端点击导出excel按钮后,请求完需要导出的数据后发送给主进程electron,由主进程保存到本地 dialog 显示用于打开和保存文件.警报等的本机系统对话框. dialog 模块提供了ap ...
- C++学习第二天(打卡)
C++ new 可以很方便的 分配一段内存. 比如 int *test= new int ; int n; cin>>n; int * test =new int [n]; 可以实现动态分 ...
- Python练习100题
Python练习100题 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #Filename:001.py cnt = 0#count the sum of res ...
- mysqldump工具实现mysql数据库的备份还原
简介 冷.温.热备份 冷备:读写操作均不可进行 温备:读操作可执行:但写操作不可执行 热备:读写操作均可执行 MyISAM:温备,不支持热备 InnoDB:都支持 不管是热备还原还是冷备还原,还原时都 ...
- linux-PAM
PAM(Pluggable Authentication Modules)即可插拔式认证模块,一种用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式. PAM认证原理:参考资料来自htt ...
- ftp 客户端 上传
ps: 1.使用netkit-ftp-0.17交叉编译出来的ftp客户端, 2.然后写上传代码,调用ftp传服务器: 3.最好使用bin二进制文件形式传输: 4.ftp客户端和Ubuntu自带的ftp ...
- Chapter 02—Creating a dataset(Part2)
三. 导入数据 图02-03:Source of data that can be imported into a dataset 11. 从键盘导入数据 (1)可能是最简单的数据导入方式. (2)使 ...
- css隐藏页面元素的多种方法
在平常的样式排版中,我们经常遇到将某个模块隐藏,下面我整理了一下隐藏元素的多种方法以及对比(有的占据空间,有的不占据空间.有的可以点击,有的不能点击.): ( 一 ) display: none; ...
- 转载一篇关于tab键与focus的文章
Focusable HTML 元素中,并不是所有元素都可以获得焦点,有如下元素可以获得焦点: a, area, button, input, object, select, textarea,这些元素 ...
- 输入URL到页面渲染
输入网址回车或者刷新页面到页面传染出来的整个流程 DNS 解析 HTTP三次握手 -> TCP/IP连接 浏览器发送请求 服务器返回请求的文件 (html) 浏览器渲染 1. DNS 解析 查找 ...