java创建restful接口,三种方法实现java调用Restful接口

转自:https://www.cnblogs.com/taozhiye/p/6704659.html

引言:当前,web开发中第三方接口的选择往往是在restful接口和web service 接口

web service接口的实现方式往往分为以下几种:

1.axis2框架

2.CXF框架

3.jdk

4.xfire

等,在这里只做记录,不再记录使用方式,需要的可以自行搜索

今天的重点是讲一讲更火的restful接口的常见实现方式:

HttpURLConnection

HttpClient

Spring的RestTemplate

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";

}

}

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;

@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".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");

Listnvps = 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;

}

}

Spring的RestTemplate

springmvc.xml增加

@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的区别是可以获取返回值和状态、头等信息

ResponseEntityre = 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());

MultiValueMappostParameters = 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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值