java调用Restful接口的三种方法

网友投稿 1002 2022-10-03


java调用Restful接口的三种方法

目录1,基本介绍2,HttpURLConnection实现3.HttpClient实现4.Spring的RestTemplate

1,基本介绍

Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,

本次介绍三种:

1.HttpURLConnection实现

2.HttpClient实现

3.Spring的RestTemplate

2,HttpURLConnection实现

@Controller

public class RestfulAction {

@Autowired

private UserService userService;

// 修改

@RequestMapping(value = "put/{param}", method = RequestMethod.PUT)

public @ResponseBody String put(@PathVariable String param) {

return "put:" + param;

}

// 新增

@RequestMapping(value = "post/{param}", method = RequestMethod.POST)

public @ResponseBody String post(@PathVariable String param,String id,String name) {

System.out.println("id:"+id);

System.out.println("name:"+name);

return "post:" + param;

}

// 删除

@RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE)

public @ResponseBody String delete(@PathVariable String param) {

return "delete:" + param;

}

// 查找

@RequestMapping(value = "get/{param}", method = RequestMethod.GET)

public @ResponseBody String get(@PathVariable String param) {

return "get:" + param;

}

// HttpURLConnection 方式调用Restful接口

// 调用接口

@RequestMapping(value = "dealCon/{param}")

public @ResponseBody String dealCon(@PathVariable String param) {

try {

String url = "http://localhost:8080/tao-manager-web/";

url+=(param+"/xxx");

URL restServiceURL = new URL(url);

HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL

.openConnection();

//param 输入小写,转换成 GET POST DELETE PUT

httpConnection.setRequestMethod(param.toUpperCase());

// httpConnection.setRequestProperty("Accept", "application/json");

if("post".equals(param)){

//打开输出开关

httpConnection.setDoOutput(true);

// httpConnection.setDoInput(true);

//传递参数

String input = "&id="+ URLEncoder.encode("abc", "UTF-8");

input+="&name="+ URLEncoder.encode("啊啊啊", "UTF-8");

OutputStream outputStream = httpConnection.getOutputStream();

outputStream.write(input.getBytes());

outputStream.flush();

}

if (httpConnection.getResponseCode() != 200) {

throw new RuntimeException(

"HTTP GET Request Failed with Error code : "

+ httpConnection.getResponseCode());

}

BufferedReader responseBuffer = new BufferedReader(

new InputStreamReader((httpConnection.getInputStream())));

String output;

System.out.println("Output from Server: \n");

while ((output = responseBuffer.readLine()) != null) {

System.out.println(output);

}

httpConnection.disconnect();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return "success";

}

}

3.HttpClient实现

package com.taozhiye.controller;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpDelete;

import org.apache.http.client.methods.HttpGet;

import oPWrHjIgEKSrg.apache.http.client.methods.HttpPost;

import org.apache.http.client.methods.HttpPut;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.taozhiye.entity.User;

import com.taozhiye.service.UserService;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.List;

@Controller

public class RestfulAction {

@Autowired

private UserService userService;

// 修改

@RequestMapping(value = "put/{param}", method = RequestMethod.PUT)

public @ResponseBody String put(@PathVariable String param) {

return "put:" + param;

}

// 新增

@RequestMapping(value = "post/{param}", method = RequestMethod.POST)

public @ResponseBody User post(@PathVariable String param,String id,String name) {

User u = new User();

System.out.println(id);

System.out.println(name);

u.setName(id);

u.setPassword(name);

u.setEmail(id);

u.setUsername(name);

return u;

}

// 删除

@RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE)

public @ResponseBody String delete(@PathVariable String param) {

return "delete:" + param;

}

// 查找

@RequestMapping(value = "get/{param}", method = RequestMethod.GET)

public @ResponseBody User get(@PathVariable String param) {

User u = new User();

u.setName(param);

u.setPassword(param);

u.setEmail(param);

u.setUsername("爱爱啊");

return u;

}

@RequestMapping(value = "dealCon2/{param}")

public @ResponseBody User dealCon2(@PathVariable String param) {

User user = null;

try {

HttpClient client = HttpClients.createDefault();

if("get".equalshttp://(param)){

HttpGet request = new HttpGet("http://localhost:8080/tao-manager-web/get/"

+"啊啊啊");

request.setHeader("Accept", "application/json");

http:// HttpResponse response = client.execute(request);

HttpEntity entity = response.getEntity();

ObjectMapper mapper = new ObjectMapper();

user = mapper.readValue(entity.getContent(), User.class);

}else if("post".equals(param)){

HttpPost request2 = new HttpPost("http://localhost:8080/tao-manager-web/post/xxx");

List nvps = new ArrayList();

nvps.add(new BasicNameValuePair("id", "啊啊啊"));

nvps.add(new BasicNameValuePair("name", "secret"));

UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nvps, "GBK");

request2.setEntity(formEntity);

HttpResponse response2 = client.execute(request2);

HttpEntity entity = response2.getEntity();

ObjectMapper mapper = new ObjectMapper();

user = mapper.readValue(entity.getContent(), User.class);

}else if("delete".equals(param)){

}else if("put".equals(param)){

}

} catch (Exception e) {

e.printStackTrace();

}

return user;

}

}

4.Spring的RestTemplate

springmvc.xml增加

class="org.springframework.http.client.SimpleClientHttpRequestFactory">

class="org.springframework.http.client.SimpleClientHttpRequestFactory">

controller

@Controller

public class RestTemplateAction {

@Autowired

private RestTemplate template;

@RequestMapping("RestTem")

public @ResponseBody User RestTem(String method) {

User user = null;

//查找

if ("get".equals(method)) {

user = template.getForObject(

"http://localhost:8080/tao-manager-web/get/{id}",

User.class, "呜呜呜呜");

//getForEntity与getForObject的区别是可以获取返回值和状态、头等信息

ResponseEntity re = template.

getForEntity("http://localhost:8080/tao-manager-web/get/{id}",

User.class, "呜呜呜呜");

System.out.println(re.getStatusCode());

System.out.println(re.getBody().getUsername());

//新增

} else if ("post".equals(method)) {

HttpHeaders headers = new HttpHeaders();

headers.add("X-Auth-Token", UUID.randomUUID().toString());

MultiValueMap postParameters = new LinkedMultiValueMap();

postParameters.add("id", "啊啊啊");

postParameters.add("name", "部版本");

HttpEntity> requestEntity = new HttpEntity>(

postParameters, headers);

user = template.postForObject(

"http://localhost:8080/tao-manager-web/post/aaa", requestEntity,

User.class);

//删除

} else if ("delete".equals(method)) {

template.delete("http://localhost:8080/tao-manager-web/delete/{id}","aaa");

//修改

} else if ("put".equals(method)) {

template.put("http://localhost:8080/tao-manager-web/put/{id}",null,"bbb");

}

return user;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:美国搞“数字霸权”损人不利己(数字货币威胁美元霸权)
下一篇:#私藏项目实操分享#【愚公系列】【愚公系列】2022年02月 攻防世界-进阶题-MISC-86(picture2)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~