Не удается авторизоваться через API Jira , хотя через Postman авторизоваться получается
Через Postman авторизоваться получается (ниже скриншот), а через программу нет (ниже код), получаю ошибку 401 (ниже скриншот). Подскажите пожалуйста в чем может быть проблема?
Public class RestClient {
private String server = "company.com";
private RestTemplate rest;
private HttpHeaders headers;
private HttpStatusCode status;
public RestClient() {
this.rest = new RestTemplate();
this.headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Accept", "*/*");
//headers.add("Accept-Encoding","gzip, deflate, br");
headers.add("Connection","keep-alive");
String basicAuth = "Basic " + new String(Base64.getEncoder().encode("user:password".getBytes()));
System.out.println(basicAuth);
headers.add("Authorization", basicAuth);
}
public String get(String uri) {
HttpEntity<String> requestEntity = new HttpEntity<String>("", headers);
ResponseEntity<String> responseEntity = rest.exchange(server + uri, HttpMethod.GET, requestEntity, String.class);
this.setStatus(responseEntity.getStatusCode());
System.out.println(requestEntity.getBody());
return responseEntity.getBody();
}
Вот ошибка
POM XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>pirp2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>pirp2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
<start-class>com.example.pirp2.PiroApp</start-class>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>net.rcarz</groupId>
<artifactId>jira-client</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240205</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mustache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Ответы (1 шт):
Автор решения: Vaagn Akopyan
→ Ссылка
По итогу спустя неделю всяческих попыток и разбора документации Spring получилось следующим образом:
Создал метод, который возвращает RestClient:
static RestClient getSimpleRC(String uri){
return RestClient.builder()
.requestFactory(new HttpComponentsClientHttpRequestFactory())
.baseUrl("https://company.com/rest/api/2/issue/"+uri+"?field=status")
.defaultHeaders(httpHeaders -> httpHeaders.set("Authorization","Basic passwordinbase64="))
.build();
}
RestClient restClient1= getSimpleRC(jirdID);
Вызов метода
String status=restClient1.get()
.accept(APPLICATION_JSON)
.retrieve().
body(String.class);