我有url,此url需要使用用户名和密码进行身份验证。在PHP上,我使用curl_setopt(CURLOPT_USERPWD,$ username。':'。$ password)做到了,我找不到在NestJS的同一链接上设置密码和用户名的任何解决方案。
import { Injectable, Scope, HttpService } from '@nestjs/common';
import { ImporterService } from '../importer.service';
import { map } from 'rxjs/operators';
@Injectable({ scope: Scope.REQUEST })
export class Supplier extends ImporterService {
supplierName = 'supplierName';
fileDownload: boolean = false;
username = 'username;
password = 'password';
async parse() {
await this.checkSupplierExist(this.supplierName);
return this.httpService
.get(
'https://www.link.com/restful/export/api/products.xml?acceptedlocales=en_US&addtags=true',
)
.pipe( map(response => console.log(response)));
}
}
此响应发送401,导致它需要身份验证。我不知道如何设置用户名或密码。有人可以帮忙吗?
答案 0 :(得分:0)
从我这里我有一个配置服务,可以处理http调用,如下所示:
@Injectable()
export class ConfigService {
private readonly envConfig: { [key: string]: string };
private servers: Object = {};
constructor(private httpService: HttpService) {
this.envConfig = {
PORT: process.env.PORT,
MONGODB_URI: process.env.MONGODB_URI,
MONGODB_SESSION_URI: process.env.MONGODB_SESSION_URI,
SESSION_SECRET: process.env.SESSION_SECRET
};
const externals = JSON.parse(process.env.EXTERNALS);
for (const lang in externals) {
this.servers[lang] = externals[lang];
}
}
get(key: string): string {
return this.envConfig[key];
}
getServer(lang: string, method: string, url: string, headers: Object, params?: Object, data?: Object) {
const config = { baseURL: this.servers[lang], url, headers, method, data, params };
return this.httpService.request(config).toPromise();
}
}
正如在getServer方法中看到的那样,还可以添加标头。 希望这就是您要寻找的