当前位置: 首页 > news >正文

服务器做多个网站惠州seo优化服务

服务器做多个网站,惠州seo优化服务,网络营销专业培训机构,网站建设yuanmus简介 RestTemplate是一个执行HTTP请求的同步阻塞式工具类,它仅仅只是在 HTTP 客户端库(例如 JDK HttpURLConnection,Apache HttpComponents,okHttp 等)基础上,封装了更加简单易用的模板方法 API&#xff0c…

简介

RestTemplate是一个执行HTTP请求的同步阻塞式工具类,它仅仅只是在 HTTP 客户端库(例如 JDK HttpURLConnection,Apache HttpComponents,okHttp 等)基础上,封装了更加简单易用的模板方法 API,方便程序员利用已提供的模板方法发起网络请求和处理,能很大程度上提升我们的开发效率

依赖

1、非Spring环境下使用RestTemplate

<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId>
</dependency>

2、Spring环境下使用 RestTemplate

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

初始化配置

@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate(){RestTemplate restTemplate = new RestTemplate(simpleClientHttpRequestFactory());return restTemplate;}public ClientHttpRequestFactory simpleClientHttpRequestFactory() {SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();factory.setReadTimeout(150000); // msfactory.setConnectTimeout(150000); // msreturn factory;}}

这种初始化方法,是使用了JDK自带的HttpURLConnection作为底层HTTP客户端实现。

可以执行配置不同的连接方式,如

HttpClient

@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate(){RestTemplate restTemplate = new RestTemplate(getClientHttpRequestFactory());return restTemplate;}/*** 使用HttpClient作为底层客户端* @return*/private ClientHttpRequestFactory getClientHttpRequestFactory() {int timeout = 5000;RequestConfig config = RequestConfig.custom().setConnectTimeout(timeout).setConnectionRequestTimeout(timeout).setSocketTimeout(timeout).build();CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).build();return new HttpComponentsClientHttpRequestFactory(client);}
}

OkHttp 

/*** 使用OkHttpClient作为底层客户端* @return*/
private ClientHttpRequestFactory getClientHttpRequestFactory(){OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).writeTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).build();return new OkHttp3ClientHttpRequestFactory(okHttpClient);
}

 

使用

restTemplate 提供的api

1、设置Header和 body

// 创建 HttpEntity
String jsonBody = JSONObject.toJSONString(weChatRefundsRequestDto);
HttpEntity<String> entity = new HttpEntity<>(jsonBody, headers);ResponseEntity<WechatRefundsResponseDto> responseEntity =restTemplate.postForEntity("url",entity,WechatRefundsResponseDto.class);

其中在entity  中设置请求头和请求体;WechatRefundsResponseDto为设置接受返回信息的对象,其他postObject 类似以上方式

public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request,Class<T> responseType, Object... uriVariables) throws RestClientException

其中postObeject,postForEntity的请求方式中的request如果类型为HttpEntity则直接使用,不是就将request当成body放入HttpEntity中使用

2、get请求设置带参数的请求

@Autowired
private RestTemplate restTemplate;/*** 单元测试(带参的get请求)*/
@Test
public void testGetByRestFul(){//请求地址String url = "http://localhost:8080/testGetByRestFul/{1}/{2}";//发起请求,直接返回对象(restful风格)ResponseBean responseBean = restTemplate.getForObject(url, ResponseBean.class, "001", "张三");System.out.println(responseBean.toString());
}
@Autowired
private RestTemplate restTemplate;/*** 单元测试(带参的get请求)*/
@Test
public void testGetByParam(){//请求地址String url = "http://localhost:8080/testGetByParam?userName={userName}&userPwd={userPwd}";//请求参数Map<String, String> uriVariables = new HashMap<>();uriVariables.put("userName", "唐三藏");uriVariables.put("userPwd", "123456");//发起请求,直接返回对象(带参数请求)ResponseBean responseBean = restTemplate.getForObject(url, ResponseBean.class, uriVariables);System.out.println(responseBean.toString());
}

3、文件上传

@Autowired
private RestTemplate restTemplate;/*** 文件上传,post请求*/
@Test
public void upload(){//需要上传的文件String filePath = "/Users/panzhi/Desktop/Jietu20220205-194655.jpg";//请求地址String url = "http://localhost:8080/upload";// 请求头设置,multipart/form-data格式的数据HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.MULTIPART_FORM_DATA);//提交参数设置MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();param.add("uploadFile", new FileSystemResource(new File(filePath)));//服务端如果接受额外参数,可以传递param.add("userName", "张三");// 组装请求体HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(param, headers);//发起请求ResponseBean responseBean = restTemplate.postForObject(url, request, ResponseBean.class);System.out.println(responseBean.toString());
}

4、文件下载

@Autowired
private RestTemplate restTemplate;/*** 小文件下载* @throws IOException*/
@Test
public void downloadFile() throws IOException {String userName = "张三";String fileName = "c98b677c-0948-46ef-84d2-3742a2b821b0.jpg";//请求地址String url = "http://localhost:8080/downloadFile/{1}/{2}";//发起请求,直接返回对象(restful风格)ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class, userName,fileName);System.out.println("文件下载请求结果状态码:" + rsp.getStatusCode());// 将下载下来的文件内容保存到本地String targetPath = "/Users/panzhi/Desktop/"  + fileName;Files.write(Paths.get(targetPath), Objects.requireNonNull(rsp.getBody(), "未获取到下载文件"));
}

 

参考:

REST 客户端 :: Spring Framework

Spring之RestTemplate详解-CSDN博客

http://www.zhtcad.com/news/320.html

相关文章:

  • 美国多ip站群服务器麒麟seo外推软件
  • 网站策划案广州引流推广公司
  • 中山地区做网站公司旺道seo软件
  • 电子商务网站建设新手技成培训网
  • 第二波疫情最新消息今天公布厦门seo代运营
  • 小说网站怎么做seo搜索引擎营销的原理是什么
  • 公司网站怎么做才能吸引人如何做好网络营销?
  • asp网站幻灯片不显示品牌推广专员
  • 做网站怎么赚钱滑县电百度收录查询工具
  • 中企动力 35 做网站网站的优化与推广分析
  • 网站引导页面设计指数平滑法
  • 怎么把网站设置为主页面百度网盘app下载安装官方免费版
  • 用户体验不好的网站百度seo关键词排名查询
  • 北京网站模板下载百度竞价被换着ip点击
  • 农产品网站建设的主要工作电商网站如何避免客户信息泄露
  • wordpress定制企业站国际重大新闻事件2023
  • 郑州做网站哪个公司好怎么建立网站平台
  • 上海市住房城乡建设管理委员会网站seo网站关键词优化软件
  • 没网站域名可以做备案吗网络营销策划书3000字
  • 广西做网站公司排名广告资源发布平台
  • 网站滚动框怎么做2022最新引流推广平台
  • 网站建设功能报价表域名年龄对seo的影响
  • 中国建设银行威海分行网站网络推广产品公司
  • 天津高端网站建设公司seo快速排名上首页
  • 自己做的网站为什么不显示图片武汉seo排名扣费
  • 金融网站开发西安百度竞价托管
  • seo关键词优化技巧二十条优化
  • 手机网站底部代码淘宝流量助手平台
  • 做网站 java 怎么样企业线上培训平台
  • 做航空产品的网站有哪些台州网站seo