正在从 Web Api 获取 XML 到 Angular
Fetching XML from Web Api to Angular
大家好 Whosebug 用户。
我想获取来自网络的字符串api(Asp.net核心)
这是我的控制器的代码:
[HttpPost("Xml")]
public string Xml()
{
try
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
return _xmlBeautifier.Beautify(reader.ReadToEnd());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
throw ex;
}
}
这是我的 Angular 代码:
onSubmit() {
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'text/xml',
'Content-Type': 'text/xml'
})
};
this.http.post('http://localhost:5000/api/xml/xml', this.xmlForm.controls['XmlData'].value, httpOptions)
.subscribe(res => {
alert('SUCCESS !!');
})
}
我现在正在做的是检查 XML 字符串是否被正确提取。我还没有代码来打印已解析的 XML 但我已经遇到了错误。
SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse ()
如何修复错误?我已经使用 Postman 测试了 API,它工作正常。
请看下面的截图
更新:
这是完整的错误信息:
HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:5000/api/xml/xml", ok: false, …
message: "Unexpected token < in JSON at position 0"
stack: "SyntaxError: Unexpected token < in JSON at position 0↵ at JSON.parse (<anonymous>)↵ at XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:19139:51)↵ at ZoneDelegate.invokeTask (http://localhost:4200/poly
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure during parsing for http://localhost:5000/api/xml/xml"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "http://localhost:5000/api/xml/xml"
而且我还在使用来自 creative-tim
的 paper-dashboard-angular 模板
更新:
我上传了示例网站 api 和我正在使用的示例 angular 代码
HttpClient 响应类型的默认值为JSON。如果您想请求 non-JSON 数据,您只需将 header 设置为以下内容:
this.http.get('...', { responseType: 'text' });
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text'
你的情况应该是
onSubmit() {
this.http.post('http://localhost:5000/api/xml/xml', { responseType: 'text' })
.subscribe(res => {
alert('SUCCESS !!');
});
}
大家好 Whosebug 用户。
我想获取来自网络的字符串api(Asp.net核心)
这是我的控制器的代码:
[HttpPost("Xml")]
public string Xml()
{
try
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
return _xmlBeautifier.Beautify(reader.ReadToEnd());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
throw ex;
}
}
这是我的 Angular 代码:
onSubmit() {
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'text/xml',
'Content-Type': 'text/xml'
})
};
this.http.post('http://localhost:5000/api/xml/xml', this.xmlForm.controls['XmlData'].value, httpOptions)
.subscribe(res => {
alert('SUCCESS !!');
})
}
我现在正在做的是检查 XML 字符串是否被正确提取。我还没有代码来打印已解析的 XML 但我已经遇到了错误。
SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse ()
如何修复错误?我已经使用 Postman 测试了 API,它工作正常。
请看下面的截图
更新:
这是完整的错误信息:
HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:5000/api/xml/xml", ok: false, …
message: "Unexpected token < in JSON at position 0"
stack: "SyntaxError: Unexpected token < in JSON at position 0↵ at JSON.parse (<anonymous>)↵ at XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:19139:51)↵ at ZoneDelegate.invokeTask (http://localhost:4200/poly
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure during parsing for http://localhost:5000/api/xml/xml"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "http://localhost:5000/api/xml/xml"
而且我还在使用来自 creative-tim
的 paper-dashboard-angular 模板更新:
我上传了示例网站 api 和我正在使用的示例 angular 代码
HttpClient 响应类型的默认值为JSON。如果您想请求 non-JSON 数据,您只需将 header 设置为以下内容:
this.http.get('...', { responseType: 'text' });
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text'
你的情况应该是
onSubmit() {
this.http.post('http://localhost:5000/api/xml/xml', { responseType: 'text' })
.subscribe(res => {
alert('SUCCESS !!');
});
}