Ошибка конвейерного вызова с использованием шаблона Rest - PullRequest
0 голосов
/ 04 марта 2019

У меня есть сценарий, в котором я хочу приостановить линию, используя мой сервис весенней загрузки.Я использую Spring-boot и Go Pipeline API 16.1.0

Ниже приведен фактический URL, доступный в документации GO API для приостановки конвейера через CURL, который отлично работает

curl 'http://ci.example.com/go/api/pipelines/dev1-pineline/pause' -u 'имя пользователя: пароль' -X POST -d 'pauseCause = тестовая пауза'

Над CURL URL работает должным образом, но когда я пытаюсь сделать то же самое с RestTemplate, он не работает.Код функции RestTemplate:

public Object pausePipeline() {

  String credentials = userName+":"+password;
  byte[] encoding = Base64.encodeBase64(credentials.getBytes());
  HttpHeaders headers = new HttpHeaders();
  headers.set("Authorization", String.valueOf(encoding));
  //headers.setContentType(MediaType.APPLICATION_JSON); // optional

  String url = String.format("%s/%s%s", pipelineUrl,pipelineName,"/pause");
  String data = "pauseCause=Monthend process started.";

  HttpEntity<String> entity = new HttpEntity<>(data, headers);
  return restTemplate.exchange(url, HttpMethod.POST, entity , Object.class).getBody();
}

Приведенный выше код вызывает исключение при попытке подключения с использованием конечной точки Rest. Трассировка стека исключения составляет

    [o.a.c.c.C.[.[.[.[dispatcherServlet]] (http-nio-8080-exec-1) Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 401 Full authentication is required to access this resource] with root cause
org.springframework.web.client.HttpClientErrorException: 401 Full authentication is required to access this resource
       at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
       at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:614) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
       at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:570) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
       at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
       at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:448) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
       at com.premierinc.forecasting.suggesteds.MonthEndService.pausePipeline(MonthEndService.java:51) ~[main/:?]
       at com.premierinc.forecasting.web.ExtractsApi.pauseMonendPipeline(ExtractsApi.java:104) ~[main/:?]
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
       at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
       at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1270) ~[springloaded-1.2.3.RELEASE.jar:1.2.3.RELEASE]
       at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[seb-4.1.6.RELEASE.jar:4.1.6.RELEASE]

1 Ответ

0 голосов
/ 12 мая 2019

Возможно, вы захотите добавить Basic к заголовку Authorization.Соответствующее изменение в вашем коде может быть похоже на приведенное ниже

  HttpHeaders headers = new HttpHeaders();
  headers.set("Authorization", "Basic " + String.valueOf(encoding));

Ссылка - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization#Examples

...