我在Angular服务中发送string
时出错。
使用Postman发送字符串时,我试图运行存储过程,并且一切正常。
但是,当我通过服务发送字符串时,它不起作用。
user.service.ts:
addUser(user: string): Observable<any> {
return this.http.post<string>('/api/user/AddUser', user)
.pipe(catchError(this.handleError));
}
控制台错误:
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost 3 请求在11.3875ms 400 application / json中完成; charset = utf-8
信息:Microsoft.AspNetCore.Server.Kestrel [32] 连接ID“ 0HLL95U87FBQE”,请求ID“ 0HLL95U87FBQE:00000003”:应用程序已完成,未读取 整个请求正文。
浏览器错误:
所以我真的不知道API真正得到了什么,因为它期望的结果必须是字符串。
UserController C#:
[HttpPost]
public User AddUser([FromBody]string user)
{
return objUser.AddUser(user);
}
如果您对我的问题有解决方案,我很感兴趣。 预先谢谢你。
编辑: 通过这样修改我的服务:
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
addUser(user: string): Observable<any> {
return this.http.post<User>('/api/user/AddUser', user.toString(), httpOptions)
.pipe(catchError(this.handleError));
}
我收到此新错误: 知道A是字符串中名字的第一个字母。
答案 0 :(得分:3)
确保将http标头中的内容类型设置为与Postman中设置的相同,并实际发送JSON。另外,您还希望帖子返回一个用户对象,以便您的userservice.ts像这样:
addUser(user: string): Observable<any> {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
return this.http.post<user>('/api/user/AddUser', JSON.stringify(user), httpOptions)
.pipe(catchError(this.handleError));
}
答案 1 :(得分:1)
我看不到任何会影响此错误的代码,唯一想到的是需要对字符串或JSON对象进行字符串化,这与邮递员有所不同。因此,最好在将请求主体传递给API之前先对其进行字符串化处理。
尝试一下:
addUser(user: string): Observable<any> {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
var userName = JSON.stringify(user); // This
return this.http.post<user>('/api/user/AddUser', userName, httpOptions)
.pipe(catchError(this.handleError));
}