我试图通过在有角度的Http Post方法中使用URL传递参数,但是我遇到未知异常,即(未知URL)的HTTP失败响应:0未知错误,但是在Postman客户端中可以正常工作。我在哪里弄错了?下面我分享了stackbliz链接
https://stackblitz.com/edit/angular-http-client-1donxb?file=app/app.component.ts
答案 0 :(得分:0)
不建议在url中添加用户凭据,因此我会像这样修改您的代码
apiUrl = 'http://192.168.82.51:8080/touch-crm/users/signin';
GetData() {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
let body = {
username: "admin",
password: "admin"
}
return this.http.post(this.apiUrl, body, httpOptions).subscribe((res)=>{
console.log(res);
});
}
答案 1 :(得分:0)
这里的问题是,您正在尝试访问使用http的资源,而stackblitz使用https。浏览器阻止从https页面加载http内容。
有关说明,请参见https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content。 如果您使用firefox或chrome(f12或ctrl + shift + i)打开开发者控制台,然后再次按加载数据按钮,则会看到此错误。
除了使用https api之外,没有简单的方法来解决此问题。您可以设置https://ngrok.com/以获得与本地api的安全连接,也可以在http上本地https://cli.angular.io/上提供角度服务。
Tony Ngo在体内传递参数是正确的,将它们作为对象传递要干净得多。
答案 2 :(得分:0)
是否定义了任何后端或文件来处理此URL? 由于您的IP已经存在并且呼叫失败,因此无法检入stackbliz链接。
答案 3 :(得分:0)
try to do like this.
routing path
> {path: 'devicelog/:id/:device', component: DevicelogComponent}
DevicelogComponent
> this.router.navigate(['campaigns', name]);
campaigns component
> this.route.params
.subscribe(
(params: Params) => {
this.campId = params.name;
if (params) {
this.campName = params.name;
if (this.campName) {
this.singleCampaigns();
}
} else {
this.campName = 'Sorry';
}
}
);