http请求:post RestTemplate方式HttpEntity参数方式

http请求:post RestTemplate方式HttpEntity参数方式

一、没啥技术含量直接看看代码就好

package cn.com.itrus.datasync.utils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;

public class HttpUtil {
	private static Logger logger = LogManager.getLogger(HttpUtil.class);

	public static String httpPost(String processorUrl, String message)
	{
		logger.debug("开始发送消息url:"+processorUrl);
		try
		{
			RestTemplate template = new RestTemplate();
			
			HttpHeaders headers = new HttpHeaders();
			MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
			headers.setContentType(type);
//			String authText = getAuthStr(authInfo);
//			logger.debug("推送验证串:" + authText);
//			headers.add("Authorization", authText);
			headers.add("Accept", MediaType.APPLICATION_JSON.toString());
			HttpEntity<String> formEntity = new HttpEntity<String>(message, headers);
			logger.debug("http请求的内容为:"+message);
			String result = template.postForObject(processorUrl, formEntity, String.class);
			logger.debug("http响应的内容为:"+result);
			return result;
		}
		catch(Exception ex)
		{
			logger.error("发送消息异常:", ex);
			return null;
		}
		
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用`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请求,并将响应的内容解析为字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值