三种方法实现java调用Restful接口
来源:互联网 发布:未播先火的网络剧 编辑:程序博客网 时间:2024/06/14 06:27
1,基本介绍
Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,
本次介绍三种:
1.HttpURLConnection实现
2.HttpClient实现
3.Spring的RestTemplate
2,HttpURLConnection实现
@Controllerpublic 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 org.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;@Controllerpublic 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".equals(param)){ HttpGet request = new HttpGet("http://localhost:8080/tao-manager-web/get/" +"啊啊啊"); request.setHeader("Accept", "application/json"); 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<NameValuePair> nvps = new ArrayList<NameValuePair>(); 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增加
<!-- 配置RestTemplate --> <!--Http client Factory --> <bean id="httpClientFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory"> <property name="connectTimeout" value="10000" /> <property name="readTimeout" value="10000" /> </bean> <!--RestTemplate --> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> <constructor-arg ref="httpClientFactory" /> </bean>
controller
@Controllerpublic 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<User> 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<String, String> postParameters = new LinkedMultiValueMap<String, String>(); postParameters.add("id", "啊啊啊"); postParameters.add("name", "部版本"); HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>( 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; }}
转载引用原地址
45 0
- 三种方法实现java调用Restful接口
- 三种方法实现调用Restful接口
- java实现客户端Client调用Restful接口
- Restful接口实现方法
- delphi7调用JAVA RESTFUL接口
- java客户端调用restful接口
- java客户端调用restful接口
- java客户端调用restful接口
- Java 调用Restful API接口的几种方式--HTTPS
- 基于Restful接口的网络API接口调用方法
- Spring-Boot -- RESTFUL风格的API接口的三种调用方式【测试】
- 《利用Java框架实现Restful接口》
- restful接口的调用
- yii2-restful的接口优化和实现互相调用
- 后端实现调用其他系统Restful接口服务
- java调用webservice接口 几种方法
- java调用webservice接口 几种方法
- java调用webservice接口 几种方法
- 进程 、进程组、会话、控制终端之间的关系
- 在Fragment中我想点击按钮然后关闭当前的Fragment返回上一个Fragment该如何实现。
- python 学习网站
- Hibernate学习-04:CRUD(增删改查)操作之根据主键查询
- The Scientist and Engineer's Guide to Digital Signal Processing一书的阅读总结
- 三种方法实现java调用Restful接口
- logstash base64解码字段
- 人工智能和机器学习相关文章
- 新公司新气象
- ActiveMQ消息传送机制以及ACK机制详解
- qml显示网络发来的图片数据
- tomcat配置文件server.xml详解
- AOP架构的简单使用
- FILE事例_1