【发布时间】:2018-05-29 07:08:16
【问题描述】:
我正在使用 HttpClientModule 在 Angular 5 中进行 Web 服务调用,它适用于所有 200 个状态响应。但是,如果有任何 400 状态,它只会等待、等待和等待,最终获得 503 状态。
例如,如果我使用正确的用户名/密码调用此函数,它会起作用,我会返回 200 状态和用户对象。但是,如果我输入了错误的用户名/密码,我不会收到 400 错误,大约一分钟后我会收到 503 错误。
服务器端日志显示 web 服务正在向我的请求返回 400 状态,但没有任何返回。
这是我的网络服务调用代码:
login(username: string, password: string): Observable<boolean> {
const url = this.getUrl('/v1/users/login');
const headers = {
headers: new HttpHeaders({'Content-Type': 'application/json', 'transactionId': uuid.v4()})
};
const body = { username, password };
return new Observable<boolean>( observer => {
this.http.post<User>(url, body, headers).subscribe(
(user: User) => {
console.log('login: Success: ', user);
observer.next(true);
},
(err: HttpErrorResponse) => {
console.log('login: Error: ', err);
observer.next(false);
}
);
});
}
这是Chrome Network日志:
【问题讨论】:
-
您在网络面板中看到了什么?最终,角度将请求交给浏览器,然后在浏览器和服务器之间传递,直到响应返回。
-
发布的 Chrome 网络日志图片
-
我的代码处理错误响应是否正确?
-
我自己仍然是一个菜鸟,除了 angular 1.x 之外的任何东西,但它看起来很合理,其他的事情是基于你的网络请求的图像,它是在你的网络服务器说 400 坏之后凭据或其他任何内容以及发送到浏览器的响应(因为它看到 503)您可以右键单击网络面板中的请求并复制为 curl 请求,然后将其粘贴到安装了 curl(或 cygwin)的 unix 终端中并查看在浏览器之外请求,但可能会得到相同的 503 响应。基本上我在想一些关于heroku config的东西?
-
这是一个皱纹。它在邮递员中工作并返回400错误没问题。
标签: angular http error-handling