Angular Httpclient post 不工作,但我无法捕获任何异常
Angular Httpclient post doesn't work, but i can't catch any exception
所以我正在尝试用 http 客户端创建一个 POST 到我的休息 api。我只需要发送一个 ID,但它根本没有做任何事情,就好像它不存在一样。没有错误信息等
这样试过:
httpOptions = {
headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
};
public likePet(id : string){
var url = environment.apiKey+"/match/cr";
const params = new HttpParams()
.set('id', id)
console.log(url);
try{
console.log("t1");
this.httpClient.post(url,{params: params},this.httpOptions);
} catch (error){
console.error(error);
}
console.log("t2");
}
这样:
httpOptions = {
headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
};
public createMatch(matchid: number){
console.log("////");
return this.httpClient.post(environment.apiKey+"match/cr?id="+matchid,this.httpOptions).pipe(
catchError((err) => {
console.error(err);
window.alert("Failed");
throw err
})
)
}
尝试使用完整的硬编码 url,例如:localhost:8080/api/match/cr?id=1
甚至没有错误消息。 API 工作正常。我的其他 http GET/POST 方法有效。
但这是我第一次 POST 没有发送 JSON,我一无所知。
post()
方法 returns 一个 Observable。就我而言,只要您订阅了该 Observable,就会立即发送呼叫。无论你在哪里调用 createMatch()
尝试 createMatch(matchId).subscribe()
看看是否有什么事情发生。
如果您不想使用 Observables,而是希望将您的响应作为 Promise,您可以这样写
httpOptions = {
headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
};
public createMatch(matchid: number){
console.log("////");
return this.httpClient.post(environment.apiKey+"match/cr?id="+matchid,this.httpOptions).pipe(
catchError((err) => {
console.error(err);
window.alert("Failed");
throw err
})
).toPromise()
}
所以我正在尝试用 http 客户端创建一个 POST 到我的休息 api。我只需要发送一个 ID,但它根本没有做任何事情,就好像它不存在一样。没有错误信息等
这样试过:
httpOptions = {
headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
};
public likePet(id : string){
var url = environment.apiKey+"/match/cr";
const params = new HttpParams()
.set('id', id)
console.log(url);
try{
console.log("t1");
this.httpClient.post(url,{params: params},this.httpOptions);
} catch (error){
console.error(error);
}
console.log("t2");
}
这样:
httpOptions = {
headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
};
public createMatch(matchid: number){
console.log("////");
return this.httpClient.post(environment.apiKey+"match/cr?id="+matchid,this.httpOptions).pipe(
catchError((err) => {
console.error(err);
window.alert("Failed");
throw err
})
)
}
尝试使用完整的硬编码 url,例如:localhost:8080/api/match/cr?id=1
甚至没有错误消息。 API 工作正常。我的其他 http GET/POST 方法有效。 但这是我第一次 POST 没有发送 JSON,我一无所知。
post()
方法 returns 一个 Observable。就我而言,只要您订阅了该 Observable,就会立即发送呼叫。无论你在哪里调用 createMatch()
尝试 createMatch(matchId).subscribe()
看看是否有什么事情发生。
如果您不想使用 Observables,而是希望将您的响应作为 Promise,您可以这样写
httpOptions = {
headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
};
public createMatch(matchid: number){
console.log("////");
return this.httpClient.post(environment.apiKey+"match/cr?id="+matchid,this.httpOptions).pipe(
catchError((err) => {
console.error(err);
window.alert("Failed");
throw err
})
).toPromise()
}