apache/dolphinscheduler · error · RuntimeException
http request method %s not supported
Error message
http request method %s not supported
What it means
HttpSender.sendHttpRequest builds an OkHttpClient request based on the alert's configured HTTP method. Only GET, POST, PUT (and HEAD via its branch) are handled; any other method configured on the HTTP alert plugin falls through to the default branch and throws this RuntimeException. It is a configuration-level guard, not a transport failure.
Source
Thrown at dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSender.java:142
}
}
private OkHttpResponse sendHttpRequest(String msg) throws RuntimeException {
switch (requestType) {
case POST:
setMsgInHeader(msg);
setMsgInRequestBody(msg);
return sendPostRequest();
case GET:
setMsgInUrl(msg);
setMsgInHeader(msg);
return sendGetRequest();
case PUT:
setMsgInHeader(msg);
setMsgInRequestBody(msg);
return sendPutRequest();
default:
throw new RuntimeException(String.format("http request method %s not supported",
requestType));
}
}
@SneakyThrows
private OkHttpResponse sendGetRequest() {
OkHttpRequestHeaders okHttpRequestHeaders = new OkHttpRequestHeaders();
okHttpRequestHeaders.setHeaders(headerParams);
okHttpRequestHeaders.setOkHttpRequestHeaderContentType(contentType);
Map<String, Object> requestParams = new HashMap<>();
log.info("sending http alert get request, url: {}, header: {}, requestParams: {}, contentType: {}",
url, headerParams, requestParams, contentType.getValue());
return OkHttpUtils.get(url, okHttpRequestHeaders,
requestParams, timeout, timeout, timeout);
}
@SneakyThrows
private OkHttpResponse sendPostRequest() {View on GitHub (pinned to 02eac45a1b)
Solutions
- Edit the HTTP alert instance configuration and set requestType to one of GET, POST, PUT or HEAD.
- If DELETE is required, upgrade to a DolphinScheduler version whose HttpSender supports it, or implement a custom alert plugin.
- Check for whitespace/case issues in the stored requestType value and normalize it (trim + toUpperCase) before creating the alert.
Example fix
// before: alert instance params
{"requestType": "DELETE"}
// after
{"requestType": "POST"} Defensive patterns
Strategy: validation
Validate before calling
Set<String> SUPPORTED = Set.of("GET", "POST", "PUT", "HEAD");
if (!SUPPORTED.contains(requestType.trim().toUpperCase())) {
throw new IllegalArgumentException("requestType must be one of GET/POST/PUT/HEAD: " + requestType);
} Try / catch
try {
alertSender.send(alert);
} catch (RuntimeException e) {
if (e.getMessage().contains("http request method")) {
log.error("Fix HTTP alert instance requestType: {}", e.getMessage());
}
} Prevention
- Restrict requestType in any alert-creation UI/script to GET/POST/PUT/HEAD.
- Normalize (trim+uppercase) requestType when persisting alert instance params.
- Add a smoke alert test after creating/updating HTTP alert instances.
When it happens
Trigger: An HTTP alert plugin instance whose 'requestType' parameter is set to a method other than GET/POST/PUT/HEAD (e.g. DELETE or a typo like 'get ' / 'PATCH') when an alert fires and send() calls sendHttpRequest().
Common situations: Typo in the requestType field when creating the HTTP alert in the UI; version drift where an alert configured for a method the installed plugin version does not support; automated provisioning writing an uppercase/lowercase mismatched method.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- url can not be null
- headerParams is not a valid json
- bodyParams is not a valid json
- requestType is not a valid value
- contentType is not a valid value
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/5547893912de9006.
Report an issue: GitHub.