通过Spring Resttemplate创建Jira用户失败,出现500异常



我正试图在JIRA系统中创建用户。为此,请选择使用Spring RestTemplate。虽然get for Users是有效的,但create不是atm。我只收到过回复500,消息是:
"请求失败。我们不确定出了什么问题。请重试,如果问题仍然存在,请联系Jira支持。"我做错了什么?我或多或少倾向于https://www.baeldung.com/rest-template这里更具体地说是交换API用于后请求的部分
这是我最相关的总是失败的测试功能:

public static void mainToJira()
{
JiraUser testuser= new JiraUser();
testuser.setDisplayName("TestUser 0");
testuser.setName("TestUser0");
testuser.setEmailAddress("test@test.test");
testuser.setPassword("Passwort123");
RestTemplateFactory factory = new RestTemplateFactory();
factory.setHost("https://OURJIRASYSTEM/rest/api/latest/user");
factory.afterPropertiesSet();
RestTemplate restTemplate = factory.getObject();
restTemplate.getInterceptors()
.add(new BasicAuthorizationInterceptor("admin@user.de", "AdminPW4411"));
org.springframework.http.HttpEntity<JiraUser> payload = new HttpEntity<JiraUser>(testuser);
ResponseEntity<JiraUser> result=null;
try
{result = restTemplate.exchange("https://OURJIRASYSTEM/rest/api/2/user", HttpMethod.POST, payload,
JiraUser.class);
System.out.println((result.getStatusCode()));}
catch (Exception e)
{System.out.println(e.getMessage());}   
}

以下是重现问题的其余依赖项:(Spring细节主要来自示例(

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties (ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JiraUser  {
private String key;
private String accountId;
private String name;
private String emailAddress;
private String displayName;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private boolean active;
private String locale;
//  private ArrayList<JiraGroup> groups;
//  private ArrayList<JiraApplicationRole> roles;   
private String password;
//  public JiraUser()
//  {
//      groups=new ArrayList<JiraGroup>();
//      roles=new ArrayList<JiraApplicationRole>();
//  }
public String getAccountId() {
return accountId;
}
public String getDisplayName() {
return displayName;
}
public String getEmailAddress() {
return emailAddress;
}
public String getKey() {
return key;
}
public String getLocale() {
return locale;
}
public String getName() {
return name;
}
public boolean isActive() {
return active;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public void setActive(boolean active) {
this.active = active;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public void setKey(String key) {
this.key = key;
}
public void setLocale(String locale) {
this.locale = locale;
}
public void setName(String name) {
this.name = name;
}   
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public String toString()
{
return displayName+ " is active: "+active;
}
}

工厂:

import org.apache.http.HttpHost;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@Component
public class RestTemplateFactory
implements FactoryBean<RestTemplate>, InitializingBean {
private RestTemplate restTemplate;
private String hostName;
private int port;
private String protocol = "http";

public RestTemplate getObject() {
return restTemplate;
}
public Class<RestTemplate> getObjectType() {
return RestTemplate.class;
}
public boolean isSingleton() {
return true;
}    
public void afterPropertiesSet() {
HttpHost host = new HttpHost(hostName, port, protocol);
restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactoryBasicAuth(host));
}
public String getHost() {
return hostName;
}
public void setHost(String host) {
this.hostName = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}

基本身份:

import java.net.URI;
import org.apache.http.HttpHost;
import org.apache.http.client.AuthCache;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
public class HttpComponentsClientHttpRequestFactoryBasicAuth 
extends HttpComponentsClientHttpRequestFactory {
HttpHost host;
public HttpComponentsClientHttpRequestFactoryBasicAuth(HttpHost host) {
super();
this.host = host;
}
protected HttpContext createHttpContext(HttpMethod httpMethod, URI uri) {
return createHttpContext();
}
private HttpContext createHttpContext() {
AuthCache authCache = new BasicAuthCache();
BasicScheme basicAuth = new BasicScheme();
authCache.put(host, basicAuth);
BasicHttpContext localcontext = new BasicHttpContext();
localcontext.setAttribute(HttpClientContext.AUTH_CACHE, authCache);
return localcontext;
}
}

问题是电子邮件地址(test@test.test)已经在我们的Jira中有一个用户。更改为不同的邮件地址(肯定不存在(起到了作用。

最新更新