解决服务间调用的三种传统方式
程序员文章站
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;
}
推荐阅读