restTemplate发送get与post请求 并且带参数

	@Test
	public void test() throws Exception{
		String url = "http://localhost:8081/aa";
		//headers
		HttpHeaders requestHeaders = new HttpHeaders();
		requestHeaders.add("api-version", "1.0");
		//body
		MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
		requestBody.add("id", "1");
		//HttpEntity
		HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody, requestHeaders);
		//post
		ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, requestEntity, String.class);
		System.out.println(responseEntity.getBody());

		ResponseEntity<String> responseEntity1  = restTemplate.exchange("http://172.26.186.206:8080/hive/list/schemas?appid=admin_test",
				HttpMethod.GET, requestEntity, String.class);
		System.out.println(responseEntity1.getBody());
	}

restTemplate的注解如下:

@Component
public class MyConfig {


    @Autowired
    RestTemplateBuilder builder;

    @Bean
    public RestTemplate restTemplate() {
        return builder.build();
    }
}

发送get请求

	@Test
	public void testCheck() {
		String url = "http://172.26.186.206:8080/syncsql/process";
		String timeStramp = String.valueOf(System.currentTimeMillis());
		HttpHeaders headers = new HttpHeaders();
		headers.add("appid", "");
		headers.add("sign", sign(null, null,null));
		headers.add("timestamp", timeStramp);

		JSONObject jsonObj = new JSONObject();

		HttpEntity<String> formEntity = new HttpEntity<String>(null, headers);

		Map<String, Object> maps = new HashMap<String, Object>();
		maps.put("sql", "select * from jingfen.d_user_city");
		maps.put("type", 1);
		maps.put("account", "admin_test");

		ResponseEntity<String> exchange = restTemplate.exchange(url + "?sql={sql}&type={type}&account={account}",
				HttpMethod.GET,
				formEntity, String.class, maps);
		String body = exchange.getBody();

		LOGGER.info("{}", body);
	}

 

  • 12
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用`RestTemplate`的`postForEntity`方法来发送HTTP POST请求,同时携文件流和其他参数。具体可以参考下面的示例代码: ```java import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class RestClient { public static void main(String[] args) throws IOException { String url = "http://example.com/upload"; // 设置请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); // 设置请求体 MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); // 添加文件流 Path filePath = Paths.get("path/to/file.txt"); byte[] fileBytes = Files.readAllBytes(filePath); Resource fileResource = new ByteArrayResource(fileBytes) { @Override public String getFilename() { return filePath.getFileName().toString(); } }; body.add("file", fileResource); // 添加其他参数 body.add("param1", "value1"); body.add("param2", "value2"); HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class); System.out.println(response.getBody()); } } ``` 在上面的示例代码中,我们首先设置了请求头,指定了请求体的类型为`multipart/form-data`。然后构造了一个`MultiValueMap`对象,用于存储请求体的键值对。通过`ByteArrayResource`类可以将文件流转化为Spring的`Resource`对象,并将其添加到请求体中。最后,我们使用`postForEntity`方法发送HTTP POST请求,并将响应的内容解析为字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值