Как использовать ионные родные http вместо угловых http - PullRequest
0 голосов
/ 16 мая 2019

Может кто-нибудь, пожалуйста, помогите мне с некоторым кодом, я пытаюсь использовать ионный родной HTTP, Но это не работает. Я продолжаю получать ошибки при доступе к ответу от http.post. Я получаю следующие ошибки:

Свойство 'json' не существует для типа 'HTTPResponse'

или

Свойство «подписка» не существует для типа «Обещание».

Когда я использую import { Http } from '@angular/HTTP' все работает, но по некоторым причинам иногда на устройстве HTTP.post не работает, поэтому я хочу использовать import { HTTP } from '@ionic-native/http'; Ниже я включил оба кода, пожалуйста, помогите мне.

Это прекрасно работает:

import { Injectable} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/add/operator/map';

import {Auth0Config as Config} from '../config/auth0';

@Injectable()
 export class Auth {
 URL: String;

   constructor(public http: Http) {
     this.url = Config.AUTH0_DOMAIN;
   }

   login(user: String, pass: String) {
    let endpoint = "/oauth/token";
    let body = {
        "client_id": Config.AUTH0_CLIENTID,
        "username": user,
        "password": pass,
        "connection": Config.AUTH0_CONNECTION,
        "grant_type": "password"
    };
    return this.http.post(this.url + endpoint, body).map(res => res.json());
  }

  getProfile(token: String) {
    let endpoint = "/userinfo";
    let query = "?access_token=" + token;
    return this.http.get(this.url + endpoint + query).map(res => res.json());
  }

}

не работает

import {Injectable} from '@angular/core';
import {HTTP} from '@ionic-native/http';
import 'rxjs/add/operator/map';

import {Auth0Config as Config} from '../config/auth0';

@Injectable()
export class Auth {
URL: String;

  constructor(public http: HTTP) {
    this.url = Config.AUTH0_DOMAIN;
  }

  login(user: String, pass: String) {
    let endpoint = "/oauth/token";
    let body = {
        "client_id": Config.AUTH0_CLIENTID,
        "username": user,
        "password": pass,
        "connection": Config.AUTH0_CONNECTION,
        "grant_type": "password"
    };
    return this.http.post(this.url + endpoint, body, {}).then(res => {
        var res = res.json()
    });
  }

  getProfile(token: String) {
    let endpoint = "/userinfo";
    let query = "?access_token=" + token;
    return this.http.get(this.url + endpoint + query, {}, {}) //.map(res => res.json());
  }

}

1 Ответ

0 голосов
/ 16 мая 2019

Проблема здесь:

  var res = res.json()

Угловые http повторяет Promise<Response>

В то время как нативный возвращает Promise<HTTPResponse>

Используйте эту строку вместо нее

 var res = res

и проверьте эту ссылку Angular HttpClient: преобразовать HttpResponse в ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...