java后台发送post请求 MultipartFile、json

3 篇文章 0 订阅
1 篇文章 0 订阅

1、需求:建立邮件发送中间建,转发邮件,以此跳过网闸。

  1、邮件服务器部分:

           https://blog.csdn.net/qq_22850319/article/details/111179153

2、java post请求

 

public static Long sendGxMail(EmailRecords emailRecords,List<MultipartFile> uploadFiles) {
		try {
			String key = "";
			if(uploadFiles != null && uploadFiles.size() > 0) {
				key = SendMailUtils.sendFileTo(uploadFiles);
			}
			String val = SendMailUtils.sendGxMail(emailRecords,key);
			return 200L;
		} catch (Exception e) {
			e.printStackTrace();
			return 400L;
		}
    }

 

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;

import com.gdgxkj.support.utils.FastjsonUtils;
import com.thinkgem.jeesite.common.config.Global;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.lgslt.entity.EmailRecords;
import com.thinkgem.jeesite.modules.lgslt.entity.MultipartFileResource;

import net.sf.json.JSONObject;
/**
	 * 发送文件
	 */
	public static String sendFileTo(List<MultipartFile> multipartFiles) {
		String url = "http://xxxx/xxxx/xxx/file";	//服务器url
		ByteArrayResource byteArrayResource;
		RestTemplate restTemplate = restTemplate();	//附件传过去中午附件名会乱码,需要处理
		restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));	//设置编码
		try {
			MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
			for (MultipartFile multipartFile : multipartFiles) {
				byteArrayResource = new MultipartFileResource(multipartFile);
				form.add("files", byteArrayResource);//放入附件
			}
			HttpHeaders headers = new HttpHeaders();
			headers.setContentType(MediaType.MULTIPART_FORM_DATA);
			HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(form, headers);
			ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);	//发送请求
			if(response.getStatusCode() == HttpStatus.OK) {
				JSONObject json =  JSONObject.fromObject(response.getBody());
				return json.getString("data");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
/**
	 * 发送邮件
	 * */
	public static String sendGxMail(EmailRecords emailRecords,String key) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("title",emailRecords.getTheme());
		map.put("content", emailRecords.getContent());
		map.put("sendTo", emailRecords.getEmailAccount());
		if(StringUtils.isNotBlank(key)) {
			map.put("fileKey", key);
		}
		String params = FastjsonUtils.toJSONString(map);	//基本参数 
		String url = Global.getConfig("mailServerUrl")+"sendMail";	//url
		RestTemplate restTemplate = new RestTemplate();
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
		HttpEntity<String> requestEntity = new HttpEntity<String>(params,headers);
		ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);	//发送请求
		if(response.getStatusCode() == HttpStatus.OK) {
			return response.getBody();
		}
		return null;
	}

 

RestTemplate  spring工具,发送MultipartFile  接收后中文附件名会乱码 (???.doc)

需要进行处理,设置编码:

https://blog.csdn.net/vacherf/article/details/80536326

public static RestTemplate restTemplate() {
	    RestTemplate restTemplate = new RestTemplate();
	    List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters();
	    for (Iterator<HttpMessageConverter<?>> iterator = list.iterator(); iterator.hasNext(); ) {
	        HttpMessageConverter item = iterator.next();
	        if (item instanceof StringHttpMessageConverter) {
	            ((StringHttpMessageConverter) item).setDefaultCharset(StandardCharsets.UTF_8);
	        } else if (item instanceof FormHttpMessageConverter) {
	            ((FormHttpMessageConverter) item).setCharset(StandardCharsets.UTF_8);
	            ((FormHttpMessageConverter) item).setMultipartCharset(StandardCharsets.UTF_8);
	        }
	    }
	    restTemplate.setMessageConverters(list);
	    return restTemplate;
	}

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值