基于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接口调用方法总结(超详细)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。