{"record":{"id":"712d3d987c9720b6","repo":"flowable/flowable-engine","slug":"method-http-method-not-supported-712d3d","errorCode":null,"errorMessage":"${method} HTTP method not supported","messagePattern":"(.+?) HTTP method not supported","errorType":"validation","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-http-common/src/main/java/org/flowable/http/common/impl/spring/reactive/SpringWebClientFlowableHttpClient.java","lineNumber":162,"sourceCode":"                    headersSpec = patch;\n                    break;\n                }\n                case \"DELETE\": {\n                    WebClient.RequestBodySpec delete = webClient.method(HttpMethod.DELETE).uri(uri);\n                    setRequestEntity(requestInfo, delete);\n                    headersSpec = delete;\n                    break;\n                }\n                case \"HEAD\": {\n                    headersSpec = webClient.head().uri(uri);\n                    break;\n                }\n                case \"OPTIONS\": {\n                    headersSpec = webClient.options().uri(uri);\n                    break;\n                }\n                default: {\n                    throw new FlowableException(requestInfo.getMethod() + \" HTTP method not supported\");\n                }\n            }\n\n            setHeaders(headersSpec, requestInfo.getHttpHeaders());\n            setHeaders(headersSpec, requestInfo.getSecureHttpHeaders());\n\n            return new WebClientExecutableHttpRequest(headersSpec, !requestInfo.isNoRedirects());\n        } catch (URISyntaxException ex) {\n            throw new FlowableException(\"Invalid URL exception occurred\", ex);\n        }\n    }\n\n    public static boolean shouldFollowRedirect(HttpClientRequest request, HttpClientResponse response) {\n        boolean followRedirect = request.currentContextView().getOrDefault(FOLLOW_REDIRECT_CONTEXT_KEY, Boolean.FALSE);\n        int statusCode = response.status().code();\n        return followRedirect && statusCode >= 300 && statusCode < 400;\n    }\n","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-http-common/src/main/java/org/flowable/http/common/impl/spring/reactive/SpringWebClientFlowableHttpClient.java#L144-L180","documentation":"SpringWebClientFlowableHttpClient.prepareRequest maps an HTTP method name from the FlowableHttpRequestInfo to a Spring WebClient builder branch via a switch. Only GET, POST, PUT, DELETE, PATCH, HEAD and OPTIONS are handled; any other method string falls into the default branch and throws this FlowableException. It is a guard against unsupported HTTP verbs in the reactive WebClient-based HTTP client.","triggerScenarios":"Calling the Spring WebClient Flowable HTTP client with requestInfo.getMethod() set to a verb outside the supported set, e.g. a custom method like 'PURGE' or 'TRACE', or a lowercase/malformed method string.","commonSituations":"BPMN HTTP task or service task configured with an unusual method in its flowable:httpRequest XML; dynamically built method strings from process variables; older process definitions using methods unsupported by WebClient.","solutions":["Change the request to one of the supported methods: GET, POST, PUT, DELETE, PATCH, HEAD or OPTIONS.","If a custom verb is genuinely required, implement a custom FlowableHttpClient that handles the method instead of the Spring WebClient one.","Verify the method value is not coming from an incorrectly populated process variable or config field (check for typos/whitespace/case)."],"exampleFix":"// before\n<flowable:httpRequest method=\"PURGE\" .../>\n\n// after\n<flowable:httpRequest method=\"DELETE\" .../>","handlingStrategy":"validation","validationCode":"Set<String> supported = Set.of(\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"HEAD\", \"OPTIONS\");\nif (!supported.contains(method)) {\n    throw new IllegalArgumentException(\"Unsupported HTTP method: \" + method);\n}","typeGuard":null,"tryCatchPattern":"try {\n    client.prepareRequest(requestInfo);\n} catch (FlowableException e) {\n    if (e.getMessage().endsWith(\"HTTP method not supported\")) {\n        // fall back to POST or reject the task\n    }\n}","preventionTips":["Restrict HTTP task method input to the supported set in your form/schema validation.","Never take the method verbatim from user-controlled process variables without whitelisting."],"tags":["http","unsupported-method","webclient","flowable-exception"],"backgroundTag":"unsupported-operation","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T16:30:33.424Z"}