角度8注入的HTTP类无法接收XML响应

我想执行HTTP服务,并使用angular(v8)获得XML响应

我试图编写一个服务,然后将其用于我的组件中。 您可以找到遵循我的“角度”代码:

getconsultationPointsoAP(wsname:string): Observable<any>{

    return this.http.get<any[]>(this.baseUrl +":"+ PORT_NUM + 
      url+wsname+'?wsdl',httpoptions).pipe(catchError(this.handleError));
}

private handleError(err: HttpErrorResponse) {
    console.log(err.message);
    return Observable.throw(err.message);
}

然后在我的“角形”组件中

    ngOnInit() {

this.soapservice.getconsultationPointsoAPWs(this._url).subscribe(

        response => {
            this.soapservice = response.text;
            console.log("OKEY");
        },error => {
            console.log("error");
            console.log(error.text);
        }
    );
} 

执行代码时,Web服务状态为200,并在浏览器(“网络”选项卡)上获得XML响应,但无法在控制台中获得结果,它显示:错误,并且 解析“ my_URL”时出现Http错误。

我正在尝试多种解决方案,如果您知道如何解决此问题,或者有任何解析解决方案,我将不胜感激。

magic398504968 回答:角度8注入的HTTP类无法接收XML响应

我无法理解您的代码结构。请尝试更改您的以下代码

this.soapservice.getConsultationPointSOAPWs(this._url).subscribe(
ngOnInit() {

    response => {
        this.soapservice = response.text;
        console.log("OKEY");
    },error => {
        console.log("error");
        console.log(error.text);
    }
);
}

ngOnInit() {
this.soapservice.getConsultationPointSOAPWs(this._url).subscribe(
response => {
    this.soapservice = response.text;
    console.log("OKEY");
},error => {
    console.log("error");
    console.log(error.text);
}
);
}

尝试将httpOptions更改为responseType:文本 getConsultationPointSOAP(wsname:string):可观察{

return this.http.get<any[]>(this.baseUrl +":"+ PORT_NUM + 
  url+wsname+'?wsdl',{responseType: 'text'}).pipe(catchError(this.handleError));

} 我希望这会锻炼。如果仍然无法正常运行,请确保在后端脚本中未将标头定义为-(“ Content-Type:application / json);

,

我找到了解决此问题的方法,我必须在标题(注意标题而不是httpHeaders)中添加最终要获取的响应类型,以我的情况为例:responseType:text,以防止获取原始格式(json),这里是相关代码:

getConsultationPointSOAPWs(url: string) {
  this.resultat = this.http.get(url,{ 
    headers: new HttpHeaders({ 
      'Authorization': sessionStorage.getItem('token'),'Content-Type': 'application/xml' 
    }),responseType: 'text' 
  });
  return this.resultat;
}
,

尝试一下:-

http://localhost:9091/metrics

Httpclient的get方法具有第二个参数作为选项,您可以在其中配置标头。 在这种情况下,我们需要将responsetype作为文本。因为默认的respose类型是json,这可能是您没有获得正确的xml类型响应的问题。

本文链接:https://www.f2er.com/3151922.html

大家都在问