显示HttpServletRequest request中的body

代码:
protected void processRequest(HttpServletRequest request,
                        HttpServletResponse response) {
                try {
                        request.setCharacterEncoding("UTF-8");
                        int size = request.getContentLength();
                        System.out.println(size);

                        InputStream is = request.getInputStream();

                        byte[] reqBodyBytes = readBytes(is, size);

                        String res = new String(reqBodyBytes);

                        System.out.println(res);
                        response.setContentType("text/html;charset=UTF-8");
                        response.setCharacterEncoding("UTF-8");
                        response.getOutputStream().write(res.getBytes("utf-8"));
                        response.flushBuffer();
                } catch (Exception e) {
                }
        }

        public static final byte[] readBytes(InputStream is, int contentLen) {
                if (contentLen > 0) {
                        int readLen = 0;

                        int readLengthThisTime = 0;

                        byte[] message = new byte[contentLen];

                        try {

                                while (readLen != contentLen) {

                                        readLengthThisTime = is.read(message, readLen, contentLen
                                                        - readLen);

                                        if (readLengthThisTime == -1) {// Should not happen.
                                                break;
                                        }

                                        readLen += readLengthThisTime;
                                }

                                return message;
                        } catch (IOException e) {
                                // Ignore
                                // e.printStackTrace();
                        }
                }

                return new byte[] {};
        }
Java可以通过HttpServletRequest对象来修改请求。具体步骤如下: 1. 获取HttpServletRequest对象 在ServletHttpServletRequest对象是作为doGet()、doPost()方法的参数传入的。如果你想在其他地方获取该对象,可以通过ThreadLocal来实现。 ```java private static ThreadLocal<HttpServletRequest> requestHolder = new ThreadLocal<>(); public static void set(HttpServletRequest request) { requestHolder.set(request); } public static HttpServletRequest get() { return requestHolder.get(); } public static void remove() { requestHolder.remove(); } ``` 2. 修改请求参数 通过HttpServletRequest对象的相关方法,可以修改请求参数。例如,下面的代码将请求的name参数的值修改为“Tom”。 ```java HttpServletRequest request = RequestHolder.get(); request.setParameter("name", "Tom"); ``` 3. 发送修改后的请求 如果是在Servlet修改请求参数,直接调用doGet()或doPost()方法即可。如果是在其他地方修改请求参数,需要将修改后的请求发送出去。可以使用HttpURLConnection或HttpClient等工具类来发送请求。 ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); // 将修改后的请求参数写入请求体 String requestBody = "name=Tom"; connection.setDoOutput(true); try (OutputStream outputStream = connection.getOutputStream()) { outputStream.write(requestBody.getBytes()); } // 发送请求并获取响应 try (InputStream inputStream = connection.getInputStream()) { // 处理响应 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值