@@ -1408,49 +1408,9 @@ else if (names != null) {
14081408
14091409 String rspBody = null ;
14101410 if (recordType >= 0 ) {
1411- try {
1412- RestTemplate client = new RestTemplate ();
1413- // 请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交
1414- HttpEntity <String > requestEntity = new HttpEntity <>(method == HttpMethod .GET ? null : body , headers );
1415- // 执行HTTP请求,这里可能抛异常,不要包装,直接让它抛,能够在浏览器 Console/XHR/{i}/Preview
1416- // 看到 error: "Internal Server Error" message: "405 null" 之类的包括信息,
1417- // 包装后反而容易混淆,并且会因为 JSON 结构不一致导致解析问题
1418- ResponseEntity <String > entity = client .exchange (url , method , requestEntity , String .class );
1419-
1420- HttpHeaders hhs = entity .getHeaders ();
1421- if (session != null && hhs != null ) {
1422- List <String > cookie = hhs .get (SET_COOKIE );
1423- if (cookie != null && cookie .isEmpty () == false ) {
1424- session .setAttribute (COOKIE , cookie );
1425- }
1426- }
1427-
1428- HttpStatus status = entity .getStatusCode ();
1429- httpServletResponse .setStatus (status .value (), status .getReasonPhrase ());
1430- rspBody = entity .getBody ();
1431- }
1432- catch (Throwable e ) {
1433- try {
1434- if (e instanceof RestClientResponseException ) {
1435- RestClientResponseException hce = (RestClientResponseException ) e ;
1436- String msg = hce .getStatusText ();
1437- httpServletResponse .sendError (hce .getRawStatusCode (), StringUtil .isEmpty (msg , true ) ? e .getMessage () : msg );
1438- } else {
1439- int code = CommonException .getCode (e );
1440- httpServletResponse .sendError (code , e .getMessage ());
1441- }
1442- }
1443- catch (Throwable ex ) {
1444- // httpServletResponse.setStatus(500, e.getMessage());
1445- throw e ;
1446- }
1447- }
1448-
1449- SESSION_MAP .put (session .getId (), session );
1450- httpServletResponse .setHeader (APIJSON_DELEGATE_ID , session .getId ());
1411+ rspBody = sendRequest (session , method , url , body , headers );
14511412 }
14521413
1453-
14541414 if (recordType != 0 ) {
14551415 try {
14561416 boolean isBodyEmpty = StringUtil .isEmpty (body , true );
@@ -1755,43 +1715,65 @@ else if (recordType > 0) {
17551715 }
17561716
17571717 if (recordType < 0 ) {
1758- try {
1759- RestTemplate client = new RestTemplate ();
1760- HttpEntity <String > requestEntity = new HttpEntity <>(method == HttpMethod .GET ? null : body , headers );
1761- ResponseEntity <String > entity = client .exchange (url , method , requestEntity , String .class );
1762-
1763- HttpHeaders hhs = entity .getHeaders ();
1764- if (session != null && hhs != null ) {
1765- List <String > cookie = hhs .get (SET_COOKIE );
1766- if (cookie != null && cookie .isEmpty () == false ) {
1767- session .setAttribute (COOKIE , cookie );
1768- }
1769- }
1718+ rspBody = sendRequest (session , method , url , body , headers );
1719+ }
17701720
1771- HttpStatus status = entity .getStatusCode ();
1772- httpServletResponse .setStatus (status .value (), status .getReasonPhrase ());
1773- rspBody = entity .getBody ();
1774- }
1775- catch (Throwable e ) {
1776- try {
1777- if (e instanceof RestClientResponseException ) {
1778- RestClientResponseException hce = (RestClientResponseException ) e ;
1779- String msg = hce .getStatusText ();
1780- httpServletResponse .sendError (hce .getRawStatusCode (), StringUtil .isEmpty (msg , true ) ? e .getMessage () : msg );
1781- } else {
1782- int code = CommonException .getCode (e );
1783- httpServletResponse .sendError (code , e .getMessage ());
1784- }
1785- }
1786- catch (Throwable ex ) {
1787- // httpServletResponse.setStatus(500, e.getMessage());
1788- throw e ;
1721+ return rspBody ;
1722+ }
1723+
1724+ protected String sendRequest (HttpSession session , HttpMethod method , String url , String body , HttpHeaders headers ) {
1725+ String rspBody = null ;
1726+ try {
1727+ RestTemplate client = new RestTemplate ();
1728+ HttpEntity <String > requestEntity = new HttpEntity <>(method == HttpMethod .GET ? null : body , headers );
1729+ ResponseEntity <String > entity = client .exchange (url , method , requestEntity , String .class );
1730+
1731+ HttpHeaders hhs = entity .getHeaders ();
1732+ if (session != null && hhs != null ) {
1733+ List <String > cookie = hhs .get (SET_COOKIE );
1734+ if (cookie != null && cookie .isEmpty () == false ) {
1735+ session .setAttribute (COOKIE , cookie );
17891736 }
17901737 }
17911738
1792- SESSION_MAP .put (session .getId (), session );
1793- httpServletResponse .setHeader (APIJSON_DELEGATE_ID , session .getId ());
1739+ // FIXME 部分请求头导致 Response Body 未返回前端
1740+ // Set<Entry<String, List<String>>> set = hhs.entrySet();
1741+ // for (Entry<String, List<String>> e : set) {
1742+ // String key = e == null ? null : e.getKey();
1743+ // if (key != null) {
1744+ // List<String> value = e.getValue();
1745+ // httpServletResponse.setHeader(key, null);
1746+ // for (String v : value) {
1747+ // httpServletResponse.addHeader(key, v);
1748+ // }
1749+ // }
1750+ // }
1751+
1752+ HttpStatus status = entity .getStatusCode ();
1753+ httpServletResponse .setStatus (status .value (), status .getReasonPhrase ());
1754+ rspBody = entity .getBody ();
17941755 }
1756+ catch (Throwable e ) {
1757+ try {
1758+ if (e instanceof RestClientResponseException ) {
1759+ RestClientResponseException hce = (RestClientResponseException ) e ;
1760+ String msg = hce .getStatusText ();
1761+ rspBody = hce .getResponseBodyAsString ();
1762+ httpServletResponse .setStatus (hce .getRawStatusCode (), StringUtil .isEmpty (msg , true ) ? e .getMessage () : msg );
1763+ } else {
1764+ int code = CommonException .getCode (e );
1765+ httpServletResponse .setStatus (code , e .getMessage ());
1766+ }
1767+ }
1768+ catch (Throwable ex ) {
1769+ int code = CommonException .getCode (e );
1770+ httpServletResponse .setStatus (code , e .getMessage ());
1771+ // throw e;
1772+ }
1773+ }
1774+
1775+ SESSION_MAP .put (session .getId (), session );
1776+ httpServletResponse .setHeader (APIJSON_DELEGATE_ID , session .getId ());
17951777
17961778 return rspBody ;
17971779 }
0 commit comments