diff --git a/collector/src/main/java/com/usthe/collector/collect/http/HttpCollectImpl.java b/collector/src/main/java/com/usthe/collector/collect/http/HttpCollectImpl.java index 0346788..3f53196 100644 --- a/collector/src/main/java/com/usthe/collector/collect/http/HttpCollectImpl.java +++ b/collector/src/main/java/com/usthe/collector/collect/http/HttpCollectImpl.java @@ -25,10 +25,12 @@ import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; import org.springframework.http.HttpMethod; +import org.springframework.util.StringUtils; import javax.net.ssl.SSLException; import java.io.IOException; @@ -296,6 +298,9 @@ public class HttpCollectImpl extends AbstractCollect { log.error("not support the http method: {}.", httpProtocol.getMethod()); return null; } + + String contentType = null; + // params Map params = httpProtocol.getParams(); if (params != null && !params.isEmpty()) { @@ -303,6 +308,7 @@ public class HttpCollectImpl extends AbstractCollect { requestBuilder.addParameter(param.getKey(), param.getValue()); } } + // headers Map headers = httpProtocol.getHeaders(); if (headers != null && !headers.isEmpty()) { @@ -332,7 +338,11 @@ public class HttpCollectImpl extends AbstractCollect { String value = DispatchConstants.BEARER + " " + httpProtocol.getAuthorization().getBearerTokenToken(); requestBuilder.addHeader(HttpHeaders.AUTHORIZATION, value); } - // todo 处理请求内容 body 暂不支持body + + // 请求内容,会覆盖post协议的params + if(StringUtils.hasLength(httpProtocol.getPayload())){ + requestBuilder.setEntity(new StringEntity(httpProtocol.getPayload(),"UTF-8")); + } // uri if (IpDomainUtil.isHasSchema(httpProtocol.getHost())) { diff --git a/common/src/main/java/com/usthe/common/entity/job/protocol/HttpProtocol.java b/common/src/main/java/com/usthe/common/entity/job/protocol/HttpProtocol.java index a5cd9ed..9cb7c8f 100644 --- a/common/src/main/java/com/usthe/common/entity/job/protocol/HttpProtocol.java +++ b/common/src/main/java/com/usthe/common/entity/job/protocol/HttpProtocol.java @@ -45,6 +45,11 @@ public class HttpProtocol { * http请求携带查询参数 eg: localhost:80/api?paramKey=value */ private Map params; + /** + * http请求携带的请求体 + */ + private String payload; + /** * 认证信息 */ diff --git a/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java b/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java index e7a9b00..3fbcda5 100644 --- a/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java +++ b/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java @@ -169,6 +169,7 @@ public class MonitorServiceImpl implements MonitorService { } param.setType(CommonConstants.PARAM_TYPE_NUMBER); break; + case "textarea": case "text": Short limit = paramDefine.getLimit(); if (limit != null) { diff --git a/manager/src/main/resources/define/app/api.yml b/manager/src/main/resources/define/app/api.yml index 2731095..8307693 100644 --- a/manager/src/main/resources/define/app/api.yml +++ b/manager/src/main/resources/define/app/api.yml @@ -20,6 +20,10 @@ configmap: type: 1 - key: password type: 2 + - key: contentType + type: 1 + - key: payload + type: 1 # 指标组列表 metrics: # 第一个监控指标组 cpu @@ -48,6 +52,10 @@ metrics: method: ^_^method^_^ # 是否启用ssl/tls,即是http还是https,默认false ssl: ^_^ssl^_^ + payload: ^_^payload^_^ + # 请求头内容 + headers: + content-type: ^_^contentType^_^ # 认证 authorization: # 认证方式: Basic Auth, Digest Auth, Bearer Token diff --git a/manager/src/main/resources/define/param/api.yml b/manager/src/main/resources/define/param/api.yml index 38a50d2..0ffc494 100644 --- a/manager/src/main/resources/define/param/api.yml +++ b/manager/src/main/resources/define/param/api.yml @@ -37,6 +37,10 @@ param: value: PUT - label: DELETE请求 value: DELETE + - field: contentType + name: Content-Type + type: text + required: false - field: username name: 用户名 type: text @@ -52,3 +56,7 @@ param: # 当type为boolean时,前端用switch展示开关 type: boolean required: true + - field: payload + name: 请求BODY + type: textarea + required: false diff --git a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html index af7e7b9..1320c8c 100644 --- a/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html +++ b/web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html @@ -63,6 +63,30 @@ /> + + {{ paramDefine.name }} + + + + + {{ paramDefine.name }} diff --git a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html index 5fff814..a8c57bf 100644 --- a/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html +++ b/web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html @@ -72,6 +72,29 @@ /> + {{ paramDefine.name }} + + + + + {{ paramDefine.name }}