This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nms-nmsweb/src/nis/nms/web/actions/ProxyAction.java
fangshunjian b3df3047b5 1、添加 ntc 流量统计
2、修改监测设置修改页面 进程监测 pid文件,进程搜索关键字的非空校验
3、修改i18n 专用设备 为 串联设备
4、增加代理类,解决前端ajax 跨域问题,之后可能会用
2019-01-12 11:07:45 +06:00

100 lines
2.7 KiB
Java

package nis.nms.web.actions;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
import org.nutz.http.Header;
import org.nutz.http.Http;
import org.nutz.http.Request;
import org.nutz.http.Request.METHOD;
import org.nutz.http.Response;
import org.nutz.http.Sender;
import nis.nms.util.BaseAction;
@SuppressWarnings("all")
@Results({
@Result(name = "ok", value = "/main.jsp")
})
public class ProxyAction extends BaseAction {
private static final long serialVersionUID = 1L;
public String executeAction() throws Exception {
InputStream is = null;
try {
String url = null;
HttpServletRequest request = this.getRequest();
Enumeration headerNames = request.getHeaderNames();
Map<String,String> headerMap = new LinkedHashMap<String,String>();
for(;headerNames.hasMoreElements();) {
String element = (String) headerNames.nextElement();
String value = request.getHeader(element);
headerMap.put(element,value);
}
url = headerMap.get("realurl");
Map parameterMap = request.getParameterMap();
Header header = Header.create(headerMap);
header = null;
Request req = Request.create(url, getMethod(request.getMethod()), parameterMap, header);
Response res = Sender.create(req).send();
is = res.getStream();
HttpServletResponse response = this.getResponse();
response.setStatus(res.getStatus());
Header resHeader = res.getHeader();
Set<Entry<String,String>> all = resHeader.getAll();
for(Entry<String,String> entry : all) {
String key = entry.getKey();
if(key != null) {
response.setHeader(key, entry.getValue());
}
}
IOUtils.copy(is, response.getOutputStream());
} finally {
if(is != null) {
is.close();
}
}
return null;
}
//GET, POST, OPTIONS, PUT, DELETE, TRACE, CONNECT, HEAD
public static METHOD getMethod(String method) {
METHOD result = null;
switch (method.toUpperCase()) {
case "GET":
result = METHOD.GET; break;
case "POST":
result = METHOD.POST; break;
case "OPTIONS":
result = METHOD.OPTIONS; break;
case "PUT":
result = METHOD.PUT; break;
case "DELETE":
result = METHOD.DELETE; break;
case "TRACE":
result = METHOD.TRACE; break;
case "CONNECT":
result = METHOD.CONNECT; break;
case "HEAD":
result = METHOD.HEAD; break;
default:
result = METHOD.GET; break;
}
return result;
}
}