有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在进行rest调用以触发Jenkins作业时获得“400此页面需要表单提交”

我需要从Java代码触发Jenkins作业。Jenkins API需要一个application/x-www-form-urlencoded内容类型,我能够从Postman Rest客户端触发作业(使用基本身份验证)。但是,当我尝试从java代码中执行相同操作时,我得到了以下异常-HttpClientErrorException:400此页面需要提交表单:

Exception while triggerring jenkins {} 400 This page expects a form submission
org.springframework.web.client.HttpClientErrorException: 400 This page expects a form submission
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:108)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:708)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:661)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:621)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:539)

我正在使用RestTemplate调用api。我已设置内容类型标题:

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

并在映射中设置窗体参数

MultiValueMap<String, String> map = new 
LinkedMultiValueMap<String, String>();
map.add("name", "value");
map.add("field2,"value");
map.add("json","a json string");

请求如下:

HttpEntity<MultiValueMap<String, String>> request = new 
HttpEntity<MultiValueMap<String, String>>(map, headers);

最后,打电话如下:

 ResponseEntity<String> response = 
    restTemplate.exchange(url,HttpMethod.POST, request, String.class);

需要注意的是,预期的响应是text/html,我希望将其存储在字符串中并进行解析以获得一些值


共 (1) 个答案

  1. # 1 楼答案

    我也有这个问题。最后,我发现如果你的作业有参数,你调用/build,这会导致400错误的请求。即使所有参数都有默认值,也必须调用/buildWithParameters