我在web应用程序中调用以下函数时出错:
getUML() {
const testName = this.formdata.get('testName');
this.disableDeployCTA = true;
const params:string = testName + "/txt";
const url = `http://localhost:8081/bruml/export/${params}`
this.httpService.generateUML(params).subscribe((response: any) => {
this.umlText = response.data;
});
}
请求通过spring引导应用程序,使用以下方法:
@GetMapping(value = "/export/{testName}/txt", produces = "text/plain")
public ResponseEntity<String> exportTxt(@PathVariable("testName") String name) {
UMLClient myClient = new UMLClient();
String txtUML = "";
byte[] toExport = null;
try {
String fileName = ".\\tempFiles\\" + name;
myClient.export(name, fileName + ".txt", true);
File txtTemp = new File(fileName + ".txt");
File file = new File(fileName + ".svg");
Path filePath = Paths.get(fileName + ".txt");
Charset charset = StandardCharsets.UTF_8;
txtUML = new String(Files.readAllBytes(filePath));
if(file.exists() && txtTemp.exists()) {
file.delete();
txtTemp.delete();
}
}
catch (Exception e){
e.printStackTrace();
}
return new ResponseEntity<>(txtUML, HttpStatus.OK);
}
生成方法如下:
generateUML(params) {
return this.httpClient.get('http://localhost:8081/bruml/export/'+ params);
}
我得到了一个错误,“json中的意外标记@”。但我不想将其解析为json——我将products属性设置为纯文本。我怎样才能解决这个问题?
编辑**
我在控制台中得到这个错误
以下是dev tools中“我的网络”选项卡中有关请求和响应的详细信息:
1条答案
按热度按时间fcy6dtqo1#
@anoncomp您是否可以从浏览器的“网络”选项卡发布请求和响应,以及
200
然后我们就可以看到你从后端得到了什么。如果您得到了正确的响应,那么问题将出现在这一行:this.umlText = response.data;
因为您希望响应是一个对象。您可能需要解析响应。编辑:你用的是Angular 吗?如果是这样的话,你能试着用一个
get
请求responseType
作为text
也供参考:Angular 文档。默认的Angular 考虑响应为JSON:从Angular 文档:
get()调用需要以下选项:
{observe: 'body', responseType: 'json'}
.这些是这些选项的默认值,因此以下示例不传递options对象。