Angular HttpHeaders responseType:'text'。给Type 'string' is not assignable to type 'json'
。错误。我知道响应不是JSON。我不明白如何更改类型?我想获取该文本(HTML),然后再使用正则表达式进行解析。
代码
const httpOptions = {
headers: new HttpHeaders({
accept: '*/*',
contentType: 'application/x-www-form-urlencoded',
}),
responseType: 'text',
};
post = this.httpClient.post(destinationUrl, httpBody, httpOptions);
post.subscribe(
(res) => {
console.log(res)
},
(error) => {
console.error('download error:', error)
},
() => {
console.log('Completed')
},
);
如您所见,响应类型为文本。由于某些我不了解的原因,我无法使其接受文本,因为它正在等待json ...
答案 0 :(得分:9)
我解决了使HTTPOptions成为对象的问题
let HTTPOptions:Object = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
responseType: 'text'
}
return this.http.post<any>(url, body, HTTPOptions ).pipe(
catchError(this.handleError)
);
答案 1 :(得分:0)
根据official angular documentation
重载#3构造一个POST请求,该请求将正文解释为 文本字符串,并以字符串值返回响应。
post(url:string,body:any,options:{headers :: HttpHeaders | { [标题:字符串]:字符串|串[]; };观察?参数?: HttpParams | {[参数:字符串]:字符串|串[]; }; reportProgress ?: 布尔值responseType:“文本”; withCredentials ?:布尔值; }): 可观察参数url字符串端点URL。
将任何内容替换为内容。
options对象HTTP选项
返回可观察值:响应的可观察值,带有 字符串类型的响应主体。
通过查看文档,我们可以执行以下操作。响应(主体内部)为字符串:
clickMe() {
this.httpClient.post(
`https://reqres.in/api/users`,
{
name: "paul rudd",
movies: ["I Love You Man", "Role Models"],
},
{
observe: 'response',
responseType: 'text',
}
).subscribe(x => console.log('x: ', x.body))
}