|
@@ -1,86 +0,0 @@
|
|
|
-package com.tofly.fees.common.annotate.repeatableHttpServletRequest;
|
|
|
-
|
|
|
-import org.apache.commons.io.IOUtils;
|
|
|
-
|
|
|
-import javax.servlet.ReadListener;
|
|
|
-import javax.servlet.ServletInputStream;
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import javax.servlet.http.HttpServletRequestWrapper;
|
|
|
-import java.io.BufferedReader;
|
|
|
-import java.io.ByteArrayInputStream;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.InputStreamReader;
|
|
|
-
|
|
|
-
|
|
|
- * @description:
|
|
|
- * @Title: RepeatableHttpServletRequest
|
|
|
- * @Package com.tofly.fees.common.annotate
|
|
|
- * @Author 芝士汉堡
|
|
|
- * @Date 2023-06-27 12:00
|
|
|
- */
|
|
|
-public class RepeatableHttpServletRequest extends HttpServletRequestWrapper {
|
|
|
- private final byte[] bytes;
|
|
|
- public RepeatableHttpServletRequest(HttpServletRequest request) throws IOException {
|
|
|
- super(request);
|
|
|
- bytes = IOUtils.toByteArray(request.getInputStream());
|
|
|
- }
|
|
|
- @Override
|
|
|
- public ServletInputStream getInputStream() throws IOException {
|
|
|
- return new ServletInputStream() {
|
|
|
- private int lastIndexRetrieved = -1;
|
|
|
- private ReadListener readListener = null;
|
|
|
- @Override
|
|
|
- public boolean isFinished() {
|
|
|
- return (lastIndexRetrieved == bytes.length-1);
|
|
|
- }
|
|
|
- @Override
|
|
|
- public boolean isReady() {
|
|
|
-
|
|
|
-
|
|
|
- return isFinished();
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void setReadListener(ReadListener readListener) {
|
|
|
- this.readListener = readListener;
|
|
|
- if (!isFinished()) {
|
|
|
- try {
|
|
|
- readListener.onDataAvailable();
|
|
|
- } catch (IOException e) {
|
|
|
- readListener.onError(e);
|
|
|
- }
|
|
|
- } else {
|
|
|
- try {
|
|
|
- readListener.onAllDataRead();
|
|
|
- } catch (IOException e) {
|
|
|
- readListener.onError(e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- @Override
|
|
|
- public int read() throws IOException {
|
|
|
- int i;
|
|
|
- if (!isFinished()) {
|
|
|
- i = bytes[lastIndexRetrieved+1];
|
|
|
- lastIndexRetrieved++;
|
|
|
- if (isFinished() && (readListener != null)) {
|
|
|
- try {
|
|
|
- readListener.onAllDataRead();
|
|
|
- } catch (IOException ex) {
|
|
|
- readListener.onError(ex);
|
|
|
- throw ex;
|
|
|
- }
|
|
|
- }
|
|
|
- return i;
|
|
|
- } else {
|
|
|
- return -1;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- }
|
|
|
- @Override
|
|
|
- public BufferedReader getReader() throws IOException {
|
|
|
- ByteArrayInputStream is = new ByteArrayInputStream(bytes);
|
|
|
- BufferedReader temp = new BufferedReader(new InputStreamReader(is));
|
|
|
- return temp;
|
|
|
- }
|
|
|
-}
|