首页 > 开发 > Java > 正文

基于Restful接口调用方法总结(超详细)

2024-07-13 10:10:43
字体:
来源:转载
供稿:网友

由于在实际项目中碰到的restful服务,参数都以json为准。这里我获取的接口和传入的参数都是json字符串类型。发布restful服务可参照文章 Jersey实现Restful服务(实例讲解),以下接口调用基于此服务。

基于发布的Restful服务,下面总结几种常用的调用方法。

(1)Jersey API

package com.restful.client;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import com.restful.entity.PersonEntity;import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.ClientResponse;import com.sun.jersey.api.client.WebResource;import javax.ws.rs.core.MediaType;/** * Created by XuHui on 2017/8/7. */public class JerseyClient { private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {  getRandomResource();  addResource();  getAllResource(); } public static void getRandomResource() {  Client client = Client.create();  WebResource webResource = client.resource(REST_API + "/getRandomResource");  ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).accept("application/json").get(ClientResponse.class);  String str = response.getEntity(String.class);  System.out.print("getRandomResource result is : " + str + "/n"); } public static void addResource() throws JsonProcessingException {  Client client = Client.create();  WebResource webResource = client.resource(REST_API + "/addResource/person");  ObjectMapper mapper = new ObjectMapper();  PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");  ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, mapper.writeValueAsString(entity));  System.out.print("addResource result is : " + response.getEntity(String.class) + "/n"); } public static void getAllResource() {  Client client = Client.create();  WebResource webResource = client.resource(REST_API + "/getAllResource");  ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).accept("application/json").get(ClientResponse.class);  String str = response.getEntity(String.class);  System.out.print("getAllResource result is : " + str + "/n"); }}

结果:

getRandomResource result is : {"id":"NO1","name":"Joker","addr":"http:///"}addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}]

(2)HttpURLConnection

package com.restful.client;import com.fasterxml.jackson.databind.ObjectMapper;import com.restful.entity.PersonEntity;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;/** * Created by XuHui on 2017/8/7. */public class HttpURLClient { private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {  addResource();  getAllResource(); } public static void addResource() throws Exception {  ObjectMapper mapper = new ObjectMapper();  URL url = new URL(REST_API + "/addResource/person");  HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();  httpURLConnection.setDoOutput(true);  httpURLConnection.setRequestMethod("POST");  httpURLConnection.setRequestProperty("Accept", "application/json");  httpURLConnection.setRequestProperty("Content-Type", "application/json");  PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");  OutputStream outputStream = httpURLConnection.getOutputStream();  outputStream.write(mapper.writeValueAsBytes(entity));  outputStream.flush();  BufferedReader reader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));  String output;  System.out.print("addResource result is : ");  while ((output = reader.readLine()) != null) {   System.out.print(output);  }  System.out.print("/n"); } public static void getAllResource() throws Exception {  URL url = new URL(REST_API + "/getAllResource");  HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();  httpURLConnection.setRequestMethod("GET");  httpURLConnection.setRequestProperty("Accept", "application/json");  BufferedReader reader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));  String output;  System.out.print("getAllResource result is :");  while ((output = reader.readLine()) != null) {   System.out.print(output);  }  System.out.print("/n"); }}

结果:

addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}getAllResource result is :[{"id":"NO2","name":"Joker","addr":"http://"}]

(3)HttpClient

package com.restful.client;import com.fasterxml.jackson.databind.ObjectMapper;import com.restful.entity.PersonEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;/** * Created by XuHui on 2017/8/7. */public class RestfulHttpClient { private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {  addResource();  getAllResource(); } public static void addResource() throws Exception {  HttpClient httpClient = new DefaultHttpClient();  PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");  ObjectMapper mapper = new ObjectMapper();  HttpPost request = new HttpPost(REST_API + "/addResource/person");  request.setHeader("Content-Type", "application/json");  request.setHeader("Accept", "application/json");  StringEntity requestJson = new StringEntity(mapper.writeValueAsString(entity), "utf-8");  requestJson.setContentType("application/json");  request.setEntity(requestJson);  HttpResponse response = httpClient.execute(request);  String json = EntityUtils.toString(response.getEntity());  System.out.print("addResource result is : " + json + "/n"); } public static void getAllResource() throws Exception {  HttpClient httpClient = new DefaultHttpClient();  HttpGet request = new HttpGet(REST_API + "/getAllResource");  request.setHeader("Content-Type", "application/json");  request.setHeader("Accept", "application/json");  HttpResponse response = httpClient.execute(request);  String json = EntityUtils.toString(response.getEntity());  System.out.print("getAllResource result is : " + json + "/n"); }}

结果:

addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}]

maven:

<dependency>  <groupId>org.apache.httpcomponents</groupId>  <artifactId>httpclient</artifactId>  <version>4.1.2</version></dependency>

(4)JAX-RS API

package com.restful.client;import com.restful.entity.PersonEntity;import javax.ws.rs.client.Client;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.client.Entity;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import java.io.IOException;/** * Created by XuHui on 2017/7/27. */public class RestfulClient { private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {  getRandomResource();  addResource();  getAllResource(); } public static void getRandomResource() throws IOException {  Client client = ClientBuilder.newClient();  client.property("Content-Type","xml");  Response response = client.target(REST_API + "/getRandomResource").request().get();  String str = response.readEntity(String.class);  System.out.print("getRandomResource result is : " + str + "/n"); } public static void addResource() {  Client client = ClientBuilder.newClient();  PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");  Response response = client.target(REST_API + "/addResource/person").request().buildPost(Entity.entity(entity, MediaType.APPLICATION_JSON)).invoke();  String str = response.readEntity(String.class);  System.out.print("addResource result is : " + str + "/n"); } public static void getAllResource() throws IOException {  Client client = ClientBuilder.newClient();  client.property("Content-Type","xml");  Response response = client.target(REST_API + "/getAllResource").request().get();  String str = response.readEntity(String.class);  System.out.print("getAllResource result is : " + str + "/n"); }}

结果:

getRandomResource result is : {"id":"NO1","name":"Joker","addr":"http:///"}addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}]

(5)webClient

package com.restful.client;import com.fasterxml.jackson.databind.ObjectMapper;import com.restful.entity.PersonEntity;import org.apache.cxf.jaxrs.client.WebClient;import javax.ws.rs.core.Response;/** * Created by XuHui on 2017/8/7. */public class RestfulWebClient { private static String REST_API = "http://localhost:8080/jerseyDemo/rest/JerseyService"; public static void main(String[] args) throws Exception {  addResource();  getAllResource(); } public static void addResource() throws Exception {  ObjectMapper mapper = new ObjectMapper();  WebClient client = WebClient.create(REST_API)    .header("Content-Type", "application/json")    .header("Accept", "application/json")    .encoding("UTF-8")    .acceptEncoding("UTF-8");  PersonEntity entity = new PersonEntity("NO2", "Joker", "http://");  Response response = client.path("/addResource/person").post(mapper.writeValueAsString(entity), Response.class);  String json = response.readEntity(String.class);  System.out.print("addResource result is : " + json + "/n"); } public static void getAllResource() {  WebClient client = WebClient.create(REST_API)    .header("Content-Type", "application/json")    .header("Accept", "application/json")    .encoding("UTF-8")    .acceptEncoding("UTF-8");  Response response = client.path("/getAllResource").get();  String json = response.readEntity(String.class);  System.out.print("getAllResource result is : " + json + "/n"); }}

结果:

addResource result is : {"id":"NO2","name":"Joker","addr":"http://"}getAllResource result is : [{"id":"NO2","name":"Joker","addr":"http://"}

maven:

<dependency>  <groupId>org.apache.cxf</groupId>  <artifactId>cxf-bundle-jaxrs</artifactId>  <version>2.7.0</version></dependency>

注:该jar包引入和jersey包引入有冲突,不能在一个工程中同时引用。

以上这篇基于Restful接口调用方法总结(超详细)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表