zoukankan      html  css  js  c++  java
  • Restful接口调用方法超详细总结

    由于在实际项目中碰到的restful服务,参数都以json为准。这里我获取的接口和传入的参数都是json字符串类型。发布restful服务可参照文章http://www.cnblogs.com/jave1ove/p/7277861.html,以下接口调用基于此服务。

    基于发布的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 + "
    ");
        }
    
        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) + "
    ");
        }
    
        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 + "
    ");
        }
    }

    结果:

    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("
    ");
        }
    
        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("
    ");
        }
    
    }

    结果:

    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 + "
    ");
        }
    
        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 + "
    ");
        }
    }

    结果:

    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 + "
    ");
        }
    
        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 + "
    ");
        }
    
        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 + "
    ");
    
        }
    }

    结果:

    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 + "
    ");
        }
    
        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 + "
    ");
        }
    }

    结果:

    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包引入有冲突,不能在一个工程中同时引用。

  • 相关阅读:
    Android WifiDisplay分析一:相关Service的启动
    Android4.2以后,多屏幕的支持 学习(一)
    第十七篇 --ANDROID DisplayManager 服务解析一
    Android Wi-Fi Display(Miracast)介绍
    Ubuntu下 Astah professional 6.9 安装
    JAVA调用c/c++代码
    Application Fundamentals
    说说Android应用的persistent属性
    Tasks and Back stack 详解
    Activity的四种launchMode
  • 原文地址:https://www.cnblogs.com/jave1ove/p/7300787.html
Copyright © 2011-2022 走看看