|
@@ -65,28 +65,27 @@ public class SelectRouteGlobalFilter implements GlobalFilter, Ordered {
|
|
|
String uri = null;
|
|
|
String body = null;
|
|
|
String bwkey = null;
|
|
|
- if (request.getQueryParams().containsKey("wsdl")) {
|
|
|
- bwkey = request.getQueryParams().getFirst("BWKEY");
|
|
|
- if (StringUtils.isNotBlank(bwkey)) {
|
|
|
+ String expression = "//BWKEY[1]";
|
|
|
+ try {
|
|
|
+ body = exchange.getAttribute(GlobalConstant.CACHED_REQUEST_BODY_STR_ATTR);
|
|
|
+ bwkey = XPathUtils.evaluate(body, expression);
|
|
|
+ if (bwkey != null) {
|
|
|
uri = wmsMapping.get(bwkey);
|
|
|
}
|
|
|
- if (StringUtils.isBlank(uri)) {
|
|
|
- uri = SC;
|
|
|
- }
|
|
|
- request.getQueryParams().remove("BWKEY");
|
|
|
- } else {
|
|
|
- String expression = "//BWKEY[1]";
|
|
|
- try {
|
|
|
- body = exchange.getAttribute(GlobalConstant.CACHED_REQUEST_BODY_STR_ATTR);
|
|
|
- bwkey = XPathUtils.evaluate(body, expression);
|
|
|
- uri = wmsMapping.get(bwkey);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("获取物流中心编码失败 | bwkey={} | body=[\n{}\n]", bwkey, body, e);
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(uri)) {
|
|
|
- log.warn("未配置物流中心编码[{}]的服务端映射", bwkey);
|
|
|
- throw NotFoundException.create(true, "404 Not Found");
|
|
|
- }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("获取物流中心编码失败 | bwkey={} | body=[\n{}\n]", bwkey, body, e);
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(uri)) {
|
|
|
+ log.warn("未配置物流中心编码[{}]的服务端映射", bwkey);
|
|
|
+ throw NotFoundException.create(true, "404 Not Found");
|
|
|
+ }
|
|
|
+ boolean hasWsdl = request.getQueryParams().containsKey("wsdl");
|
|
|
+ if (hasWsdl && StringUtils.isBlank(body) && StringUtils.isBlank(uri)) {
|
|
|
+ uri = SC;
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(uri)) {
|
|
|
+ log.warn("未配置物流中心编码[{}]的服务端映射", bwkey);
|
|
|
+ throw NotFoundException.create(true, "404 Not Found");
|
|
|
}
|
|
|
final Route route = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
|
|
|
assert route != null;
|