Hay una API de arranque de sprint, que está configurada con autenticación, al acceder a ella, la respuesta será un enlace descargable.
Intenté integrar lo mismo en angular de la siguiente manera: básicamente, usando un archivo de servicio para invocar el resto de la API, en una invocación exitosa, estoy leyendo la URL de la respuesta y, usando una etiqueta de anclaje para agregarla al cuerpo del documento y hacer clic en ella mediante programación ,
constructor(private api: ApiService) this.api.getLogs(param).subscribe(result =>{ if (result.status == 200) { var file_path = result['url']; let a = <HTMLInputElement>document.createElement('A'); $(a).attr("href", result['url']); $(a).attr("download", file_path.substr(file_path.lastIndexOf('/') + 1)); document.body.appendChild(a); a.click(); document.body.removeChild(a); } else { console.log('failed'); } });Y en el archivo de servicio, usé httpHeaders para incluir el nombre de usuario y la contraseña mientras invocaba el resto de la API.
public getLogs(data):Observable<any>{ const url = 'http://<localhost>:<port>:</path>' return this.http.get(url, { headers: new HttpHeaders({ 'Authorization': 'Basic ' + btoa('test:test') }), observe: 'response'}); }Pero cuando esto se ejecuta en el navegador, la aplicación redirige a la URL compartida por la respuesta de la API y solicita la autenticación. Sin embargo, una vez que doy las credenciales, todas las siguientes invocaciones no solicitan esto. ¿Qué es lo que falta aquí, o hay algo que estaba implementando de manera incorrecta? Házmelo saber.