基于Restful接口调用方法总结(超详细)
由于在实际项目中碰到的restful服务,参数都以json为准。这里我获取的接口和传入的参数都是json字符串类型。发布restful服务可参照文章Jersey实现Restful服务(实例讲解),以下接口调用基于此服务。
基于发布的Restful服务,下面总结几种常用的调用方法。
(1)JerseyAPI
packagecom.restful.client;
importcom.fasterxml.jackson.core.JsonProcessingException;
importcom.fasterxml.jackson.databind.ObjectMapper;
importcom.restful.entity.PersonEntity;
importcom.sun.jersey.api.client.Client;
importcom.sun.jersey.api.client.ClientResponse;
importcom.sun.jersey.api.client.WebResource;
importjavax.ws.rs.core.MediaType;
/**
*CreatedbyXuHuion2017/8/7.
*/
publicclassJerseyClient{
privatestaticStringREST_API="http://localhost:8080/jerseyDemo/rest/JerseyService";
publicstaticvoidmain(String[]args)throwsException{
getRandomResource();
addResource();
getAllResource();
}
publicstaticvoidgetRandomResource(){
Clientclient=Client.create();
WebResourcewebResource=client.resource(REST_API+"/getRandomResource");
ClientResponseresponse=webResource.type(MediaType.APPLICATION_JSON).accept("application/json").get(ClientResponse.class);
Stringstr=response.getEntity(String.class);
System.out.print("getRandomResourceresultis:"+str+"\n");
}
publicstaticvoidaddResource()throwsJsonProcessingException{
Clientclient=Client.create();
WebResourcewebResource=client.resource(REST_API+"/addResource/person");
ObjectMappermapper=newObjectMapper();
PersonEntityentity=newPersonEntity("NO2","Joker","http://");
ClientResponseresponse=webResource.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class,mapper.writeValueAsString(entity));
System.out.print("addResourceresultis:"+response.getEntity(String.class)+"\n");
}
publicstaticvoidgetAllResource(){
Clientclient=Client.create();
WebResourcewebResource=client.resource(REST_API+"/getAllResource");
ClientResponseresponse=webResource.type(MediaType.APPLICATION_JSON).accept("application/json").get(ClientResponse.class);
Stringstr=response.getEntity(String.class);
System.out.print("getAllResourceresultis:"+str+"\n");
}
}
结果:
getRandomResourceresultis:{"id":"NO1","name":"Joker","addr":"http:///"}
addResourceresultis:{"id":"NO2","name":"Joker","addr":"http://"}
getAllResourceresultis:[{"id":"NO2","name":"Joker","addr":"http://"}]
(2)HttpURLConnection
packagecom.restful.client;
importcom.fasterxml.jackson.databind.ObjectMapper;
importcom.restful.entity.PersonEntity;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;
/**
*CreatedbyXuHuion2017/8/7.
*/
publicclassHttpURLClient{
privatestaticStringREST_API="http://localhost:8080/jerseyDemo/rest/JerseyService";
publicstaticvoidmain(String[]args)throwsException{
addResource();
getAllResource();
}
publicstaticvoidaddResource()throwsException{
ObjectMappermapper=newObjectMapper();
URLurl=newURL(REST_API+"/addResource/person");
HttpURLConnectionhttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept","application/json");
httpURLConnection.setRequestProperty("Content-Type","application/json");
PersonEntityentity=newPersonEntity("NO2","Joker","http://");
OutputStreamoutputStream=httpURLConnection.getOutputStream();
outputStream.write(mapper.writeValueAsBytes(entity));
outputStream.flush();
BufferedReaderreader=newBufferedReader(newInputStreamReader(httpURLConnection.getInputStream()));
Stringoutput;
System.out.print("addResourceresultis:");
while((output=reader.readLine())!=null){
System.out.print(output);
}
System.out.print("\n");
}
publicstaticvoidgetAllResource()throwsException{
URLurl=newURL(REST_API+"/getAllResource");
HttpURLConnectionhttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestProperty("Accept","application/json");
BufferedReaderreader=newBufferedReader(newInputStreamReader(httpURLConnection.getInputStream()));
Stringoutput;
System.out.print("getAllResourceresultis:");
while((output=reader.readLine())!=null){
System.out.print(output);
}
System.out.print("\n");
}
}
结果:
addResourceresultis:{"id":"NO2","name":"Joker","addr":"http://"}
getAllResourceresultis:[{"id":"NO2","name":"Joker","addr":"http://"}]
(3)HttpClient
packagecom.restful.client;
importcom.fasterxml.jackson.databind.ObjectMapper;
importcom.restful.entity.PersonEntity;
importorg.apache.http.HttpResponse;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.entity.StringEntity;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.util.EntityUtils;
/**
*CreatedbyXuHuion2017/8/7.
*/
publicclassRestfulHttpClient{
privatestaticStringREST_API="http://localhost:8080/jerseyDemo/rest/JerseyService";
publicstaticvoidmain(String[]args)throwsException{
addResource();
getAllResource();
}
publicstaticvoidaddResource()throwsException{
HttpClienthttpClient=newDefaultHttpClient();
PersonEntityentity=newPersonEntity("NO2","Joker","http://");
ObjectMappermapper=newObjectMapper();
HttpPostrequest=newHttpPost(REST_API+"/addResource/person");
request.setHeader("Content-Type","application/json");
request.setHeader("Accept","application/json");
StringEntityrequestJson=newStringEntity(mapper.writeValueAsString(entity),"utf-8");
requestJson.setContentType("application/json");
request.setEntity(requestJson);
HttpResponseresponse=httpClient.execute(request);
Stringjson=EntityUtils.toString(response.getEntity());
System.out.print("addResourceresultis:"+json+"\n");
}
publicstaticvoidgetAllResource()throwsException{
HttpClienthttpClient=newDefaultHttpClient();
HttpGetrequest=newHttpGet(REST_API+"/getAllResource");
request.setHeader("Content-Type","application/json");
request.setHeader("Accept","application/json");
HttpResponseresponse=httpClient.execute(request);
Stringjson=EntityUtils.toString(response.getEntity());
System.out.print("getAllResourceresultis:"+json+"\n");
}
}
结果:
addResourceresultis:{"id":"NO2","name":"Joker","addr":"http://"}
getAllResourceresultis:[{"id":"NO2","name":"Joker","addr":"http://"}]
maven:
org.apache.httpcomponents httpclient 4.1.2
(4)JAX-RSAPI
packagecom.restful.client;
importcom.restful.entity.PersonEntity;
importjavax.ws.rs.client.Client;
importjavax.ws.rs.client.ClientBuilder;
importjavax.ws.rs.client.Entity;
importjavax.ws.rs.core.MediaType;
importjavax.ws.rs.core.Response;
importjava.io.IOException;
/**
*CreatedbyXuHuion2017/7/27.
*/
publicclassRestfulClient{
privatestaticStringREST_API="http://localhost:8080/jerseyDemo/rest/JerseyService";
publicstaticvoidmain(String[]args)throwsException{
getRandomResource();
addResource();
getAllResource();
}
publicstaticvoidgetRandomResource()throwsIOException{
Clientclient=ClientBuilder.newClient();
client.property("Content-Type","xml");
Responseresponse=client.target(REST_API+"/getRandomResource").request().get();
Stringstr=response.readEntity(String.class);
System.out.print("getRandomResourceresultis:"+str+"\n");
}
publicstaticvoidaddResource(){
Clientclient=ClientBuilder.newClient();
PersonEntityentity=newPersonEntity("NO2","Joker","http://");
Responseresponse=client.target(REST_API+"/addResource/person").request().buildPost(Entity.entity(entity,MediaType.APPLICATION_JSON)).invoke();
Stringstr=response.readEntity(String.class);
System.out.print("addResourceresultis:"+str+"\n");
}
publicstaticvoidgetAllResource()throwsIOException{
Clientclient=ClientBuilder.newClient();
client.property("Content-Type","xml");
Responseresponse=client.target(REST_API+"/getAllResource").request().get();
Stringstr=response.readEntity(String.class);
System.out.print("getAllResourceresultis:"+str+"\n");
}
}
结果:
getRandomResourceresultis:{"id":"NO1","name":"Joker","addr":"http:///"}
addResourceresultis:{"id":"NO2","name":"Joker","addr":"http://"}
getAllResourceresultis:[{"id":"NO2","name":"Joker","addr":"http://"}]
(5)webClient
packagecom.restful.client;
importcom.fasterxml.jackson.databind.ObjectMapper;
importcom.restful.entity.PersonEntity;
importorg.apache.cxf.jaxrs.client.WebClient;
importjavax.ws.rs.core.Response;
/**
*CreatedbyXuHuion2017/8/7.
*/
publicclassRestfulWebClient{
privatestaticStringREST_API="http://localhost:8080/jerseyDemo/rest/JerseyService";
publicstaticvoidmain(String[]args)throwsException{
addResource();
getAllResource();
}
publicstaticvoidaddResource()throwsException{
ObjectMappermapper=newObjectMapper();
WebClientclient=WebClient.create(REST_API)
.header("Content-Type","application/json")
.header("Accept","application/json")
.encoding("UTF-8")
.acceptEncoding("UTF-8");
PersonEntityentity=newPersonEntity("NO2","Joker","http://");
Responseresponse=client.path("/addResource/person").post(mapper.writeValueAsString(entity),Response.class);
Stringjson=response.readEntity(String.class);
System.out.print("addResourceresultis:"+json+"\n");
}
publicstaticvoidgetAllResource(){
WebClientclient=WebClient.create(REST_API)
.header("Content-Type","application/json")
.header("Accept","application/json")
.encoding("UTF-8")
.acceptEncoding("UTF-8");
Responseresponse=client.path("/getAllResource").get();
Stringjson=response.readEntity(String.class);
System.out.print("getAllResourceresultis:"+json+"\n");
}
}
结果:
addResourceresultis:{"id":"NO2","name":"Joker","addr":"http://"}
getAllResourceresultis:[{"id":"NO2","name":"Joker","addr":"http://"}
maven:
org.apache.cxf cxf-bundle-jaxrs 2.7.0
注:该jar包引入和jersey包引入有冲突,不能在一个工程中同时引用。
以上这篇基于Restful接口调用方法总结(超详细)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。