import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import lombok.extern.slf4j.Slf4j; import com.alibaba.fastjson.JSONObject; import com.jrwp.common.filter.AppApiFilter; import com.jrwp.common.help.AppApiReuestData; import com.jrwp.common.utils.AESEncodeUtil; import com.jrwp.common.utils.JacksonUtil; import com.jrwp.external.api.request.CommonExternalApiRequestData; import com.jrwp.external.api.request.ExternalApiReuestData; @Slf4j public class ExternalApiHttpServletRequestWrapper extends HttpServletRequestWrapper { private final byte[] body; public ExternalApiHttpServletRequestWrapper(HttpServletRequest request,ExternalApiReuestData eard,String key) throws Exception { super(request); CommonExternalApiRequestData<JSONObject> temp = new CommonExternalApiRequestData<>(); temp.setAppId(eard.getAppId()); temp.setRequestData(JSONObject.parseObject(AESEncodeUtil.decode(eard.getRequestData(), key))); //eard.setRequestData(); this.body = JacksonUtil.toJson(temp).getBytes("UTF-8"); } public ExternalApiHttpServletRequestWrapper(HttpServletRequest request,AppApiReuestData eard,String key) throws Exception { super(request); CommonExternalApiRequestData<JSONObject> temp = new CommonExternalApiRequestData<>(); temp.setAppId(eard.getToken()); String xxa=eard.getRequestData(); // String encryptResultStr = new String(xxa,"utf-8"); String xxaa=eard.getToken(); log.info("解密前的数据:",eard.getRequestData()); log.info("解密前的数据123:",key); String jsonStr = AESEncodeUtil.decode(eard.getRequestData(), key); // String jsonStr = AESEncodeUtil.decode(xxa, key); log.info("解密后的数据:",jsonStr); temp.setRequestData(JSONObject.parseObject(jsonStr)); //eard.setRequestData(); this.body = JacksonUtil.toJson(temp).getBytes("UTF-8"); } @Override public BufferedReader getReader() throws IOException { return new BufferedReader(new InputStreamReader(getInputStream())); } @Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream bais = new ByteArrayInputStream(body); return new ServletInputStream() { @Override public int read() throws IOException { return bais.read(); } @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } }; } }