错误:advanced-http值必须为字符串Ionic

时间:2018-10-04 13:19:19

标签: api http ionic-framework ionic3

我尝试使用@ angular / http发送我的api,但出现401 polyfills错误,因此我将其更改为@ ionic-native / http,但随后又出现另一个错误,即:Error:advanced-http值必须为字符串”,因此我记录了标题,并且为空?

日志

"normalizedNames": {},
  "lazyUpdate": [
    {
      "name": "Authorization",
      "value": "Basic xxxxxxxx",
      "op": "a"
    },
    {
      "name": "Content-Type",
      "value": "application/x-www-form-urlencoded",
      "op": "a"
    }
  ],
  "headers": {},
  "lazyInit": {
    "normalizedNames": {},
    "lazyUpdate": null,
    "headers": {}
  }

mycode

import { HTTP } from '@ionic-native/http';

 constructor(public http: HTTP) {}

  login(username, password) {

    let body = {
      username: username,
      password: password
    };
    let headers = new HttpHeaders();
    headers = headers.append('Authorization', 'Basic xxxxxx');
    headers = headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post(apiUrl, body, { headers: headers })
  .then(data => {

    console.log(data.status);
  console.log(data.data); // data received by server
    console.log(data.headers);

  })
  .catch(error => {

   console.log(error); // error message as string

  });

2 个答案:

答案 0 :(得分:0)

尝试一下。

将此添加到您的app.module

import { HttpClientModule } from '@angular/common/http';

imports: [
  BrowserModule,
  HttpClientModule,
  IonicModule.forRoot(MyApp)
],

然后在您的代码中

//import { HTTP } from '@ionic-native/http';
import { HttpClient } from '@angular/common/http';

 constructor(public http: HttpClient) {}

  login(username, password) {

    let body = {
      username: username,
      password: password
    };
    let headers = new HttpHeaders();
    headers = headers.append('Authorization', 'Basic xxxxxx');
    headers = headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post(apiUrl, body, { headers: headers })
  .subscribe(data => {

    console.log(data.status);
  console.log(data.data); // data received by server
    console.log(data.headers);

  })
  .catch(error => {

   console.log(error); // error message as string

  });

答案 1 :(得分:0)

线程很旧,但可能可以帮助其他人。像下面那样更改标题并进行测试。

return this.http.post(apiUrl, body, { headers: 'Content-Type: application/json', Authorization: 'Basic xxx'})....