java重写post请求参数_用java写post请求(添加post参数)

这篇博客详细介绍了如何使用Java实现POST请求,并添加请求参数。代码示例中展示了如何构造请求头和参数,以及如何处理响应内容。适用于需要进行HTTP POST请求的Java开发者。
摘要由CSDN通过智能技术生成

网址和参数需要根据自己的情况修改

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.HttpURLConnection;

import java.net.URL;

public static String getHtmlByPost(String urlString) throws IOException{

/*

*  POST https://www.xxx.com

sign: 3149fa619b03988963bf1c53b8947f0e

Content-Type: application/x-www-form-urlencoded

Content-Length: 285

Host: www.xxx.com

Connection: Keep-Alive

Accept-Encoding: gzip

User-Agent: okhttp/3.2.0

_time=2017-12-15%2011%3A07%3A02&user_coordinate=116.307956%2C39.966622&coordinate=116.307956%2C39.966622&_osversion=6.0&radius=50000&_build=50&_platform=Android&_cityid=110100&_device=awiftb0%3A89%3A00%3A99%3A27%3Ae8&_version=3.8.3&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HandlerInterceptorAdapter 是 Spring MVC 中提供的拦截器,可以在请求处理之前或之后对请求进行拦截和处理。 下面是一个示例,演示了如何使用 HandlerInterceptorAdapter 对 POST 请求进行拦截并重写 JSON 参数: ```java public class JsonParamInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (request.getMethod().equals("POST")) { String contentType = request.getHeader("Content-Type"); if (contentType != null && contentType.contains("application/json")) { // 读取 JSON 参数 String json = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8); JSONObject jsonObj = JSONObject.parseObject(json); // 修改 JSON 参数 jsonObj.put("newKey", "newValue"); // 重写请求参数 String newJson = jsonObj.toJSONString(); request = new CustomHttpServletRequest(request, newJson.getBytes(StandardCharsets.UTF_8)); } } return true; } private static class CustomHttpServletRequest extends HttpServletRequestWrapper { private final byte[] body; public CustomHttpServletRequest(HttpServletRequest request, byte[] body) { super(request); this.body = body; } @Override public ServletInputStream getInputStream() throws IOException { return new ServletInputStreamWrapper(body); } @Override public BufferedReader getReader() throws IOException { return new BufferedReader(new InputStreamReader(getInputStream(), StandardCharsets.UTF_8)); } } private static class ServletInputStreamWrapper extends ServletInputStream { private final ByteArrayInputStream bis; public ServletInputStreamWrapper(byte[] buffer) { this.bis = new ByteArrayInputStream(buffer); } @Override public int read() throws IOException { return bis.read(); } } } ``` 上述代码中,我们在 `preHandle` 方法中判断请求是否为 POST 请求,并且 Content-Type 是否为 application/json。如果是,就读取 JSON 参数,并且修改其中的一个字段,最后重写请求参数,然后将修改后的请求继续传递给后续的处理器。 注意,为了重写请求参数,我们需要自定义一个 HttpServletRequestWrapper,并且重写 getInputStream 和 getReader 方法。这样就可以将修改后的请求参数传递给后续的处理器了。 当然,这只是一个简单的示例,实际场景中可能需要更复杂的处理逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值