Spring Boot基礎教程23-調用REST服務-如何使用代理

  • 添加依賴

<dependency>

<groupId>org.apache.httpcomponents</groupId>

<artifactId>httpclient</artifactId>

</dependency>

  • 代碼實現

/**

 * @author wujing

 */

@RestController

@RequestMapping(value = "/rest", method = RequestMethod.POST)

public class RestRoncooController {

 

@Autowired

private RoncooUserLogCache RoncooUserLogCache;

 

@RequestMapping(value = "/update")

public RoncooUserLog update(@RequestBody JsonNode jsonNode) {

System.out.println("jsonNode=" + jsonNode);

RoncooUserLog bean = RoncooUserLogCache.selectById(jsonNode.get("id").asInt(1));

if(bean == null){

bean = new RoncooUserLog();

}

bean.setUserName("測試");

bean.setCreateTime(new Date());

bean.setUserIp("192.168.1.1");

RoncooUserLogCache.updateById(bean);

return bean;

}

 

@RequestMapping(value = "/update/{id}", method = RequestMethod.GET)

public RoncooUserLog update2(@PathVariable(value = "id") Integer id) {

RoncooUserLog bean = RoncooUserLogCache.selectById(id);

if(bean == null){

bean = new RoncooUserLog();

}

bean.setUserName("測試");

bean.setCreateTime(new Date());

bean.setUserIp("192.168.1.1");

RoncooUserLogCache.updateById(bean);

return bean;

}

 

}

  • 測試

@Autowired

private RestTemplateBuilder restTemplateBuilder;

 

/**

 * get請求

 */

@Test

public void getForObject() {

RoncooUserLog bean = restTemplateBuilder.build().getForObject("http://localhost:8080/rest/update/{id}", RoncooUserLog.class, 6);

System.out.println(bean);

Map<String,Object> map = new HashMap<String,Object>();

map.put("id", 7);

bean = restTemplateBuilder.build().postForObject("http://localhost:8080/rest/update", map, RoncooUserLog.class);

System.out.println(bean);

}

 

代理實現

static class ProxyCustomizer implements RestTemplateCustomizer {

@Override

public void customize(RestTemplate restTemplate) {

String proxyHost = "59.33.46.187";

int proxyPort = 6969;

 

HttpHost proxy = new HttpHost(proxyHost, proxyPort);

HttpClient httpClient = HttpClientBuilder.create().setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {

@Override

public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context) throws HttpException {

 

return super.determineProxy(target, request, context);

}

}).build();

HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);

httpComponentsClientHttpRequestFactory.setConnectTimeout(10000);

httpComponentsClientHttpRequestFactory.setReadTimeout(60000);

restTemplate.setRequestFactory(httpComponentsClientHttpRequestFactory);

}

}

 

代理測試

 

String result = restTemplateBuilder.additionalCustomizers(new ProxyCustomizer()).build().getForObject("http://www.roncoo.com", String.class);

System.out.println(result);

在線代理

http://ip.zdaye.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章