如何通过角度的URL传递参数

时间:2019-06-27 10:21:36

标签: angular httpclient

我试图通过在有角度的Http Post方法中使用URL传递参数,但是我遇到未知异常,即(未知URL)的HTTP失败响应:0未知错误,但是在Postman客户端中可以正常工作。我在哪里弄错了?下面我分享了stackbliz链接

https://stackblitz.com/edit/angular-http-client-1donxb?file=app/app.component.ts

4 个答案:

答案 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';
        }
        }
        );