瀏覽代碼

10-09 配置质量探测代理服务器

allen 2 年之前
父節點
當前提交
4c7d7a48c4

+ 77 - 0
src/main/java/io/renren/modules/dataSet/controller/SnoopProxyControlle.java

@@ -0,0 +1,77 @@
+package io.renren.modules.dataSet.controller;
+
+
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequest;
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.util.StreamUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+
+@RestController
+public class SnoopProxyControlle {
+    private String targetAddr = "http://lab2:8099";
+
+    /**
+     * 代理所有请求
+     *
+     * @param request
+     * @param response
+     * @throws Exception
+     */
+    @RequestMapping(value = "/v1/**", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public void proxy(HttpServletRequest request, HttpServletResponse response) throws IOException, URISyntaxException {
+        // String url = URLDecoder.decode(request.getRequestURL().toString(), "UTF-8");
+        URI uri = new URI(request.getRequestURI());
+        String path = uri.getPath();
+        String query = request.getQueryString();
+        String target = targetAddr + path.replace("/renren-fast","/api");
+        if (query != null && !query.equals("") && !query.equals("null")) {
+            target = target + "?" + query;
+        }
+        URI newUri = new URI(target);
+        // 执行代理查询
+        String methodName = request.getMethod();
+        HttpMethod httpMethod = HttpMethod.resolve(methodName);
+        if (httpMethod == null) {
+            return;
+        }
+        ClientHttpRequest delegate = new SimpleClientHttpRequestFactory().createRequest(newUri, httpMethod);
+        Enumeration<String> headerNames = request.getHeaderNames();
+        // 设置请求头
+        while (headerNames.hasMoreElements()) {
+            String headerName = headerNames.nextElement();
+            Enumeration<String> v = request.getHeaders(headerName);
+            List<String> arr = new ArrayList<>();
+            while (v.hasMoreElements()) {
+                arr.add(v.nextElement());
+            }
+            delegate.getHeaders().addAll(headerName, arr);
+        }
+        StreamUtils.copy(request.getInputStream(), delegate.getBody());
+        // 执行远程调用
+        ClientHttpResponse clientHttpResponse = delegate.execute();
+        response.setStatus(clientHttpResponse.getStatusCode().value());
+        // 设置响应头
+        clientHttpResponse.getHeaders().forEach((key, value) -> value.forEach(it -> {
+            response.setHeader(key, it);
+        }));
+        System.out.println(clientHttpResponse.getBody());
+        StreamUtils.copy(clientHttpResponse.getBody(), response.getOutputStream());
+
+    }
+
+}

+ 0 - 1
src/main/java/io/renren/modules/sys/service/impl/DataSetDyServiceImpl.java

@@ -52,7 +52,6 @@ public class DataSetDyServiceImpl extends ServiceImpl<DataSetDyMapper, DataSetDy
             else status = 2;
         }
         Long categoryId = categoryService.getByName(classificationtag);
-        //获取当前登录的用户,如果是管理员的话,uid就为null
         Long uid = Long.parseLong((String) params.get("currentUserId"));
         List<DataSetDy_Vo> datasetInfo = new ArrayList<>();
         List<DataSetDy_Vo> datasetAllInfo = new ArrayList<>();