Angular httpClient - 没有捕获 PHP 错误对象
Angular httpClient - not catching PHP error object
我的任务是连接到旧的 php 登录名 api,它只是 returns 一个成功或错误消息响应对象。
当我使用正确的凭据连接时,我会收到成功对象,而当我没有收到错误消息时。太棒了!
但是,httpClient 似乎无法识别错误对象。因此,无论是否成功,该对象都被接受为成功的响应对象。
php代码相关的两行:
$response = array("error" => "Combinación user-pass errónea", "success" => false, "status" => 500, "message" => "Error");
echo $json_response = safe_json_encode($response);
然后我向错误响应添加了更多属性,希望它能被识别:
$response = array("error" => "Combinación user-pass errónea", "success" => false, "status" => 403, "message" => "Error");
运气不好...
然后我将 observable 转换为 promise,以便使过程尽可能接近使用相同登录 api:[=15 的 AngularJS 应用程序上使用的代码=]
let httpOptions = {
headers: new HttpHeaders(
{ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }),
};
let params = new HttpParams({
fromObject: { action: "login", username: credentials.username, password: credentials.password },
});
this.httpClient.post(`http://xxxxxxxxxxx/user_controller.php`, params.toString(), httpOptions).toPromise()
.then( data => console.log(data),
err => console.log(err) );
仍然没有运气...
$http.error 处理程序由服务器错误(如 500 或 401)触发;
如果您希望为错误登录触发 401 错误(未经授权),请执行以下操作:
if ($loginFailed) {
header("HTTP/1.1 401 Unauthorized");
exit;
}
您的 angular 代码会将其识别为错误。
如果您想继续按照当前的方式发回错误,请在成功回调中拾取它们,因为根据服务器,调用实际上是成功的。
this.httpClient.post(`http://xxxxxxxxxxx/user_controller.php`, params.toString(), httpOptions).toPromise()
.then( data => {
console.log(data);
if (JSON.parse(data).error) this.triggerErrorResponse(data.error);
}, err => console.log(err) );
我的任务是连接到旧的 php 登录名 api,它只是 returns 一个成功或错误消息响应对象。
当我使用正确的凭据连接时,我会收到成功对象,而当我没有收到错误消息时。太棒了!
但是,httpClient 似乎无法识别错误对象。因此,无论是否成功,该对象都被接受为成功的响应对象。
php代码相关的两行:
$response = array("error" => "Combinación user-pass errónea", "success" => false, "status" => 500, "message" => "Error");
echo $json_response = safe_json_encode($response);
然后我向错误响应添加了更多属性,希望它能被识别:
$response = array("error" => "Combinación user-pass errónea", "success" => false, "status" => 403, "message" => "Error");
运气不好...
然后我将 observable 转换为 promise,以便使过程尽可能接近使用相同登录 api:[=15 的 AngularJS 应用程序上使用的代码=]
let httpOptions = {
headers: new HttpHeaders(
{ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }),
};
let params = new HttpParams({
fromObject: { action: "login", username: credentials.username, password: credentials.password },
});
this.httpClient.post(`http://xxxxxxxxxxx/user_controller.php`, params.toString(), httpOptions).toPromise()
.then( data => console.log(data),
err => console.log(err) );
仍然没有运气...
$http.error 处理程序由服务器错误(如 500 或 401)触发; 如果您希望为错误登录触发 401 错误(未经授权),请执行以下操作:
if ($loginFailed) {
header("HTTP/1.1 401 Unauthorized");
exit;
}
您的 angular 代码会将其识别为错误。
如果您想继续按照当前的方式发回错误,请在成功回调中拾取它们,因为根据服务器,调用实际上是成功的。
this.httpClient.post(`http://xxxxxxxxxxx/user_controller.php`, params.toString(), httpOptions).toPromise()
.then( data => {
console.log(data);
if (JSON.parse(data).error) this.triggerErrorResponse(data.error);
}, err => console.log(err) );