欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决服务间调用的三种传统方式

程序员文章站 2022-06-08 12:17:54
...

第一种方法:使用HttpRequest第三方工具


第一步:pom依赖

<dependency>
    <groupId>com.github.kevinsawicki</groupId>
    <artifactId>http-request</artifactId>
    <version>6.0</version>
</dependency>

第二步:在代码中直接使用HttpRequest类

String body = HttpRequest.post(new StringBuilder(GuojiaoInfo.guojiaoHttp)
                        .append("facsp/auth/AuthLogin"))
                        .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
                        .send(JSON.toJSONString(param)).body();

如果是发post请求,就调用

HttpRequest.post()方法

如果发get请求,就调用

HttpRequest.get()方法。

 第二种方法:使用RestTemplate(Spring框架封装)


springcloud中服务间两种restful调用方式

RestTemplate和Feign

RestTemplate是一个Http客户端,

使用RestTemplate的几种方式:

一、RestTemplate template = new RestTemplate();使用服务ip或者域名访问

二、使用LoadBalancerClient的choose()获得ServiceInstance

三、注入RestTemplate bean,使用服务名称访问

解决服务间调用的三种传统方式

解决服务间调用的三种传统方式

第三种方法:使用HttpClient(Apache提供)


代码示例:

public static int sendToSanMingJSON(String url, String paramJson) throws Exception {
        int status;
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(SANMING_SERVICE_URL+url);
        logger.debug("三明服务地址是==> "+SANMING_SERVICE_URL+url);
//        ArrayList<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
//        parameters.add(new BasicNameValuePair("Connection", "keep-alive"));
//        parameters.add(new BasicNameValuePair("Content-Type", "application/json"));
//        parameters.add(new BasicNameValuePair("Accept-Encoding", "gzip"));
//        parameters.add(new BasicNameValuePair("Accept-Charset", "utf-8"));
//        parameters.add(new BasicNameValuePair("Accept", "*/*"));
        httpPost.setHeader("Connection","keep-alive");
        httpPost.setHeader("Content-Type","application/json");
        httpPost.setHeader("Accept-Encoding","gzip");
        httpPost.setHeader("Accept-Charset","utf-8");
        StringEntity requestEntity = new StringEntity(paramJson,"utf-8");
        requestEntity.setContentEncoding("UTF-8");
        httpPost.setEntity(requestEntity);
        String jsonData=null;
        try {
//            httpPost.setEntity(new UrlEncodedFormEntity(parameters));
            CloseableHttpResponse response = httpClient.execute(httpPost);
            jsonData = EntityUtils.toString(response.getEntity(), Charset.forName("utf-8"));
        } catch (Exception e) {
            logger.info("调三明服务异常 ==> "+e.getMessage());
        }
        Map map = JSON.parseObject(jsonData);
        status = Integer.parseInt(map.get("code").toString());
        return status;
    }