开发远程调用接口_JAVA远程服务调用篇RESTFUL接口调用篇

        以前曾经分享过JAVA远程服务调用篇相关内容,今天给这个系列再补一篇文章,就是restful接口的调用。是后端调用哈,前端的话一般是ajax调用后台接口。本次介绍三种方式:

    1.HttpURLConnection实现

    2.HttpClient实现

    3.Spring的RestTemplate

一、构造服务端

package com.demo.restful.service.impl;  import com.demo.restful.model.User;import com.demo.restful.service.UserService;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;  /** * @Author: * @Date: 2019/1/8 11:37 */@Path("user")public class UserServiceImpl implements UserService {      @Override    @GET    @Path("getUser/{name}/{age}")    @Produces(MediaType.APPLICATION_JSON)    public String getUser(@PathParam("name") String name,@PathParam("age") Integer age) {        return new User(name,age).toString();    }}

服务端代码如上,服务端接口地址为:

http://localhost:8080/rest/user/getUser/xiaoming/18,

下面以三种不同的方式来调用该接口演示效果。

二、HttpURLConnection实现

<dependency>   <groupId>org.apache.httpcomponentsgroupId>   <artifactId>httpclientartifactId>   <version>4.5.6version>dependency>
package com.demo.restful;  import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;  /** * @Author: * @Date: 2019/1/9 11:12 */public class HttpUrlConnectionTest {    public static void main(String[] args) throws Exception {        String url = "http://localhost:8080/rest/user/getUser/xiaoming/18";        URL serverUrl = new URL(url);        HttpURLConnection connection = (HttpURLConnection) serverUrl.openConnection();        connection.setRequestMethod("GET");        if (connection.getResponseCode() != 200) {            throw new RuntimeException(                    "HTTP GET Request Failed with Error code : "                            + connection.getResponseCode());        }        BufferedReader responseBuffer = new BufferedReader(                new InputStreamReader((connection.getInputStream())));        String output;        System.out.println("Output from Server:  \n");        while ((output = responseBuffer.readLine()) != null) {            System.out.println(output);        }        connection.disconnect();    }}

HttpURLConnection方式调用结果如下图:

fbe2e18c1978061c42d638ab93e7b6bd.png

二、HttpClient实现

<dependency>   <groupId>org.apache.httpcomponentsgroupId>   <artifactId>httpclientartifactId>   <version>4.5.6version>dependency>
package com.demo.restful;  import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.HttpClients;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.stream.Collectors;  /** * @Author: * @Date: 2019/1/9 11:42 */public class HttpClientTest {      public static void main(String[] args) throws Exception {        HttpClient httpClient = HttpClients.createDefault();        HttpGet httpGet = new HttpGet("http://localhost:8080/rest/user/getUser/xiaoming/18");          HttpResponse execute = httpClient.execute(httpGet);        HttpEntity entity = execute.getEntity();        System.out.println(entity);        String result = new BufferedReader(new InputStreamReader(entity.getContent()))                .lines().collect(Collectors.joining("\n"));        System.out.println(result);    }}

HttpClient调用结果如下图所示:

0b86a46136a0dfafded0f852109c7ead.png

三、Spring的RestTemplate实现

<dependency>   <groupId>org.springframeworkgroupId>   <artifactId>spring-webmvcartifactId>   <version>5.1.3.RELEASEversion>dependency>
<web-app>  <display-name>Archetype Created Web Applicationdisplay-name>  <servlet>    <servlet-name>restful-clientservlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>    <init-param>      <param-name>contextConfigLocationparam-name>      <param-value>spring.xmlparam-value>    init-param>  servlet>  <servlet-mapping>    <servlet-name>restful-clientservlet-name>    <url-pattern>/url-pattern>  servlet-mapping>web-app>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.demo.restful.controller"/>beans>
package com.demo.restful.controller;  import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import org.springframework.web.client.RestTemplate;  /** * @Author: * @Date: 2019/1/9 14:56 */@Controllerpublic class RestTemplateController {    @Autowired    private RestTemplate restTemplate;         //手动将RestTemplate加入Spring容器中    @Bean    public RestTemplate restTemplate(){        return new RestTemplate();    }      @RequestMapping("/getUser.json")    @ResponseBody    public String getUser(){        String url = "http://localhost:8080/rest/user/getUser/xiaoming/18";        String forObject = restTemplate.getForObject(url, String.class);        return forObject;    }}

Spring的RestTemplate 调用结果如下图所示:

82bbe6993fc9d72ea6a7336659dc291b.png

感兴趣的读者也可查看下同系列的其他文章:

        JAVA远程服务调用篇-RMI和RPC

        JAVA远程服务调用篇-Web service服务发布篇

        JAVA远程服务调用篇-Web service服务调用篇

        JAVA远程服务调用篇-Dubbo调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值