如果只是针对纯Rest接口处理的话,我们可以使用restTemplate对象来操作,简单方便,可以不需要手写httpClient代码了。

我们看下基本的用法,如下:

1.getForObject

client:
@RestController
@RequestMapping("restTemp")
public class RestTemplateController {
@GetMapping("getTest1")
public void getTest1(){
String url = "http://具体iP地址/demo/demoTest?name={name}&email={email}";
Map<String,String> params = new HashMap<>();
params.put("name","yyc");
params.put("email","12306");
RestTemplate restTemplate = new RestTemplate();
String request = restTemplate.getForObject(url,String.class,params);
//String request = restTemplate.getForObject(url,String.class,"yyc","email");
System.out.println(request);
}
}

server:
@GetMapping(value = "demoTest", produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest(@RequestParam String name,@RequestParam String email){
System.out.println(name);
System.out.println(email);
return "success";
}

2.getForEntity

client:

@GetMapping("getTest2")
public void getTest2(){
String url = "http://具体iP地址:8080/demo/demoTest?name={name}&email={email}";
HttpHeaders headers = new HttpHeaders();
headers.set("phone","123456");
Map<String,Object> params = new HashMap<>();
params.put("name","yyc");
params.put("email","12306");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(headers);
ResponseEntity<String> request = restTemplate.getForEntity(url,String.class,httpEntity,params);
System.out.println(request.getBody());
}
server:
@GetMapping(value = "demoTest1", produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest1(@RequestParam String name, @RequestParam String email, @RequestHeader String phone){
System.out.println(name);
System.out.println(email);
System.out.println(phone);
return "success";
}

3.postForObject

这里的User类是实体类,在此本人不写了,请自行创建 User Entity。

server:

@PostMapping(value = "demoTest2", consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest2(@RequestBody User user, @RequestHeader String phone){
System.out.println(user.getName());
System.out.println(user.getEmail());
System.out.println(phone);
return "success";
}
client:
@PostMapping("postTest1")
public void postTest1() {
String url = "http://IP:8080/demo/demoTest2";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("phone", "123456");
Map<String, Object> params = new HashMap<>();
params.put("name", "yyc");
params.put("email", "12306");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params,headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity,String.class);
System.out.println(request.getBody());
}

当所有传递的数据类型为复杂数据类型: headers.setContentType(MediaType.MULTIPART_FORM_DATA);

并且需要接受的参数不再实体类中进行映射。

MultiValueMap来进行传递。

server:

@PostMapping(value = "demoTest3",produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest3(@RequestParam String name,String email, @RequestHeader String phone){
System.out.println(name);
System.out.println(email);
System.out.println(phone);
return "success";
}
client:
@PostMapping("postTest2")
public void postTest2() {
String url = "http://ip:8080/demo/demoTest3";
HttpHeaders headers = new HttpHeaders();
headers.set("phone", "1234567");
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("name", "yyc");
params.add("email", "123067");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.out.println(request.getBody());
}
既有实体类,又有普通的参数
server:
@PostMapping(value = "demoTest4",produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest4(@RequestBody User user,String sex, @RequestHeader String phone){
System.out.println(user.getName());
System.out.println(user.getEmail());
System.out.println(sex);
System.out.println(phone);
return "success";
}
client:
@PostMapping("postTest3")
public void postTest3() {
String url = "http://ip:8080/demo/demoTest4?sex={sex}";
HttpHeaders headers = new HttpHeaders();
headers.set("phone", "1234567");
Map<String, Object> params = new HashMap<>();
params.put("name", "yyc");
params.put("email", "123067");
Map<String,Object> other = new HashMap<>();
other.put("sex","男");
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class,other);
System.out.println(request.getBody());
}




RestTemplate对象,进行get和post简单用法的更多相关文章

  1. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  2. WPF之Treeview控件简单用法

    TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...

  3. listActivity和ExpandableListActivity的简单用法

    http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...

  4. Knockout简单用法

    Knockout简单用法 在最近做的一个项目中,页面数据全部通过js ajax调用webapi接口获取,也就是说页面的数据全部使用javascript脚本填充,这就想到了使用一个MVVM模式的js框架 ...

  5. JS的简单用法

    JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...

  6. slf4j的简单用法以及与log4j的区别

    之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...

  7. HttpURLConnection和HttpClient的简单用法

    HttpURLConnection的简单用法:先通过一个URL创建一个conn对象,然后就是可以设置get或者是post方法,接着用流来读取响应结果即可 String html = null; lon ...

  8. Numpy的简单用法

    Numpy的简单用法 import numpy as np 一.创建ndarray对象 列表转换成ndarray: >>> a = [1,2,3,4,5] >>> ...

  9. Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法

    1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面.    这种还是比较简单的类型.因为一个页面也就这种类型. ...

随机推荐

  1. Win10 LTSC 2019 长期支持版

    win 10 LTSB 2016 文件名:cn_windows_10_enterprise_2016_ltsb_x86_dvd_9057089.iso (2.62GB) 语言: Chinese – S ...

  2. oracle plsql 异常

      set serveroutput on DECLARE pename emp.ename%type; begin '; exception when no_data_found then dbms ...

  3. 取未清PO逻辑

    注意这里的 GR qty [   WEMNG] 和 Open Quantity [OBMNG] *&---------------------------------------------- ...

  4. javascript中this、new、apply和call详解

    如果在javascript语言里没有通过new(包括对象字面量定义).call和apply改变函数的this指针,函数的this指针都是指向window的,重要的话要说三遍.... 讲解this指针的 ...

  5. 【VS开发】WaitForSingleObject 和 WaitForMultipleObjects函数 (让线程挂起等待事件)

    WaitForSingleObject 和 WaitForMultipleObjects:1.WaitForSingleObject  等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通 ...

  6. Spring笔记4

    Spring中的JdbcTemplate JdbcTemplate:他是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装. JdbcTemplate的作用:用于和数据库交互的, ...

  7. 顺序表习题(1)-打印非递减数组a与b的升序并集(去除重复元素)

    void Print_Union(SqList a,SqList b) { , q = ; //初始化指针 ; //记录上一次打印的元素 while (p!=a.length&&q!= ...

  8. golang ---调用window api函数执行程序

    package main import "syscall" import "unsafe" func main() { var hand uintptr = u ...

  9. SpirngBoot--错误消息的定制

    在SpringBoot中发生了4xx 5xx之类的错误,SpringBoot默认会发一个/error的请求,该请求由BasicErrorController处理,即在SpringBoot中错误处理也是 ...

  10. ② Python3.0 运算符

    Python3.0 语言支持的运算符有: 算术运算符.比较(关系)运算符.赋值运算符.逻辑运算符.位运算符.成员运算符.身份运算符.运算符优先级 一.算术运算符 常见的算术运算符有+,-,*,/,%, ...