@Component
@WebFilter(filterName = "TransFilter", urlPatterns = {"/kungfupeng/sysA/transToB/*"})
public class TransFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponseWrapper httpResponse = new HttpServletResponseWrapper((HttpServletResponse) response);
//获取参数映射键值对
Map<String, String[]> parameterMap = httpRequest.getParameterMap();
//组装新的参数键值映射对-----start-----
Map<String, String> newParams = new HashMap<String, String>();
if (parameterMap != null && parameterMap.size() != 0) {
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
//这里的参数可以根据需求来定【这里默认为一key一value】
newParams.put(entry.getKey(), entry.getValue()[0]);
}
}
//组装新的参数键值映射对------end------
//获取需要地址转换的路径
String path = httpRequest.getRequestURI();
//做校验,是否是满足地址转换的条件
if (path != null && path.contains("/sysA/transToB/")) {
path = path.replace("/sysA/transToB/", "/sysB/");
//拼接访问B系统的地址
path = "http://kungfupeng" + path;
//利用OkHttp工具类来进行对B系统的访问【这里的参数一定记得传递过去】
String s = OkHttpUtils.get(path, newParams);
//返回的结果
System.out.println("返回字符串【" + s + "】");
//设置返回内容编码格式
httpResponse.setHeader("Content-type", "text/html; charset=utf-8");
//从系统A进行返回
httpResponse.getWriter().write(s);
} else {
chain.doFilter(request, response);
}
return;
}
@Override
public void destroy() {
}
}
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.9.1</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.14.0</version>
</dependency>
Okhttp工具类
public class OkHttpUtils {
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
public OkHttpUtils() {
}
public static String postJson(String url, String json) {
Response response = null;
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody body = RequestBody.create(JSON, json);
Request request = (new Builder()).post(body).url(url).build();
Call call = okHttpClient.newCall(request);
try {
System.err.println("Send!!!!");
response = call.execute();
System.err.println("code = " + response.code());
System.err.println("all = " + response.toString());
return response.body().string();
} catch (Exception var8) {
System.err.println("Error!!!!");
var8.printStackTrace();
return null;
}
}
public static String post(String url, Map<String, String> params) {
Response response = null;
OkHttpClient okHttpClient = new OkHttpClient();
if (params == null) {
params = new HashMap();
}
okhttp3.FormBody.Builder builder = new okhttp3.FormBody.Builder();
Set<Entry<String, String>> entrySet = ((Map)params).entrySet();
Iterator var6 = entrySet.iterator();
while(var6.hasNext()) {
Entry<String, String> entry = (Entry)var6.next();
builder.add((String)entry.getKey(), (String)entry.getValue());
}
RequestBody requestBodyPost = builder.build();
Request request = (new Builder()).post(requestBodyPost).url(url).build();
Call call = okHttpClient.newCall(request);
try {
System.err.println("Send!!!!");
response = call.execute();
System.err.println("code = " + response.code());
System.err.println("all = " + response.toString());
return response.body().string();
} catch (Exception var10) {
System.err.println("Error!!!!");
var10.printStackTrace();
return null;
}
}
public static String get(String url, Map<String, String> params) {
return post(url, params);
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务