Ionic 3 показывает данные из API с токеном - PullRequest
0 голосов
/ 02 апреля 2019

Я работаю над проектом, мне нужна помощь.Мне нужно показать данные из API.клиент дал мне URL и токен.Мне нужно знать, как я могу показать данные из этого API на моей консоли?(На веб-сайте данные отображаются в консоли в формате json, но мне нужно показать это в моем приложении)

Я пытаюсь использовать один учебник, но он показывает только получение данных из простого API, а не с токеном.

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { HospitalPage } from '../hospital/hospital';
import { Observable } from 'rxjs/Observable';
import { HttpClient } from '@angular/common/http';
import { CallNumber } from '@ionic-native/call-number/ngx';


@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {

data: Observable<any>;


 constructor(public navCtrl: NavController, public httpClient: HttpClient, 
 public callNumber: CallNumber) {


  this.data = this.httpClient.get('http://api.igiinsurance.com.pk:8888/insurance_takaful/insurance-api/get_panel_hospitals.php?offset=0&limit=100');
this.data
.subscribe(data => {
  console.log('my data: ', data);
})


  }

enter image description here это показывает ошибку токена доступа, которая очевидна. Я не добавляю токен, кто-нибудь знает, как я могу показать его, пожалуйста?

Ответы [ 3 ]

1 голос
/ 03 апреля 2019

Ваш запрос должен выглядеть следующим образом (на основе ответа @Sergey Rudenko).Поскольку это токен на предъявителя, вы должны включить это

getDataUsingToken1(token) {
    const httpOptions = {headers: new HttpHeaders().set("Authorization", "token "+ token)};
    return this.http.get('http://api.igiinsurance.com.pk:8888/insurance_takaful/insurance-api/get_panel_hospitals.php?offset=0&limit=100', httpOptions)
};
0 голосов
/ 04 апреля 2019

Хорошо, я докопался до этого, к сожалению, без (быстрого) решения.

Почтальон запускает очень специфические запросы с произвольными полями заголовка без , запускающими «предполетное» поведение, как это происходит в наших запросах.

enter image description here

Официальные спецификации говорят, что любые нетривиальные запросы (так называемое предполётное поведение) должны инициировать начальный OPTIONS вызов с Access-Control-Request-Headers, перечисляя нестандартный заголовок, который вы хотите использовать .

enter image description here

При отправке запросов через HttpClient / Axios / ... все они ведут себя в соответствии с этой официальной спецификацией. Я не нашел способ обойти / переопределить это поведение.

К сожалению, удаленный сервер принимает только это нестандартное поведение и не отвечает ни на один вызов ОПЦИИ, который вы ему отправляете.

Может быть, такая библиотека существует, или почтальон просто использует специально разработанное решение. Надеюсь, это хоть немного помогло.

0 голосов
/ 03 апреля 2019

Таким образом, в зависимости от того, какой токен это иногда, вам нужно передать его как заголовок, а иногда как URL-параметр. Попробуйте обратиться к своему клиенту и спросите, какой у вас токен и как вы должны его использовать.

Вот примерно так и должно быть (обновлено на основе ваших комментариев):

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Observable } from 'rxjs/Observable';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  data: Observable<any>;
  token: string;


  constructor(
      public navCtrl: NavController, 
      public httpClient: HttpClient
  ) {
    this.token = "ee66cf61762eab785b006186dbc8c980";
  }

  getDataUsingToken() {
      const httpOptions = {headers: new HttpHeaders().set("token", this.token)};
      return this.httpClient.get('http://api.igiinsurance.com.pk:8888/insurance_takaful/insurance-api/get_panel_hospitals.php?offset=0&limit=100', httpOptions)
  };

  ngAfterViewInit() {
    this.getDataUsingToken().subscribe((data)=>{
        console.log(data);
    })
  }

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