SpringBoot接收GET请求中⽂乱码,项⽬统⼀编码UTF-8,第三⽅
回调通知GET请。。。
百度各种⽅法都试了,没有⼀点效果,实际上在进controller之前已经乱码了,怎么URLDecoder.decode都没⽤,怎么getBytes修改编码都没有⽤
直接针对某个请求做编码处理
解决⽅案如下:
fig;
import org.tor.Request;
import org.tor.RequestFacade;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import t.annotation.Bean;
import t.annotation.Configuration;
url编码和utf8区别
import javax.servlet.*;
import java.io.IOException;
import flect.Field;
import java.nio.charset.Charset;
/**
* 针对第三⽅请求我⽅服务器编码格式不⼀致的问题
*/
@Configuration
public class GBKFilterConfig {
@Bean
public FilterRegistrationBean gbkFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setDispatcherTypes(DispatcherType.REQUEST);
registration.setFilter(new Filter() {
@Override
public void init(javax.servlet.FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
RequestFacade req = (RequestFacade) request;
Class clazz = Class();
try {
Field field = DeclaredField("request");
field.setAccessible(true);
Request r = (Request) (req);
Request p = r.getCoyoteRequest();
chain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void destroy() {
}
});
// 针对处理的请求
registration.addUrlPatterns("/v1/api/ruipu/notify");
registration.addUrlPatterns("/v1/api/diandian/order");
registration.setName("gbkFilter");
registration.setOrder(Integer.MIN_VALUE);
return registration;
}
}