本文为原创文章,转载请标明出处

目录

  1. 猫眼API
  2. HttpClient 实现 HTTP 请求
    • 安装 HttpClientModule 模块
    • 创建 provider
    • 创建 page
  3. 一些坑
    • 坑1: 未在 app.module.ts 中导入 HttpClientModule
    • 坑2: Chrome 调试时 CORS 问题
    • 坑3: WKWebView 问题
  4. 更多

1. 猫眼API

当然是基于这篇古老的文章啦 ==> http://www.jianshu.com/p/9855610eb1d4

因为是2015年的文章,已经时隔2年多,很难确保API仍可使用,所以我亲自进行了抓包,发现没毛病还能用,并且还多发现了2个接口,现整理如下:

正在热映电影列表:

http://m.maoyan.com/movie/list.json?type=hot&offset=0&limit=1

Request:

type ==> hot  类型(正在热映)
offset 初始数据位置
limit 显示数据最大上限值

即将上映电影列表:

http://m.maoyan.com/movie/list.json?type=coming&offset=0&limit=1

Request:

type ==> coming  类型(即将上映)
offset 初始数据位置
limit 显示数据最大上限值

电影详情:

http://m.maoyan.com/movie/342068.json

Request:

后面跟上电影id即可

最新短评列表1:

http://m.maoyan.com/comments.json?movieid=342068&offset=0&limit=1

Request:

movieid 电影id
offset 初始数据位置(最大为1000)
limit 显示数据最大上限值(最大为15)

最新短评列表2:

http://m.maoyan.com/mmdb/comments/movie/342068.json?offset=0&limit=1&startTime=2017-12-01 08:00:00

Request:

后面跟上电影id

offset  初始数据位置(最大为1000)
limit 显示数据最大上限值(最大为15)
startTime 评论初始时间

评论回复列表:

http://m.maoyan.com/mmdb/replies/comment/129764411.json?offset=0&limit=1

Request:

后面跟上评论id

offset  初始数据位置
limit 显示数据最大上限值

本地影院列表:

http://m.maoyan.com/cinemas.json

根据ip段获取本地影院列表

放映时刻表:

http://m.maoyan.com/showtime/wrap.json?cinemaid=1181&movieid=343905

Request:

cinemaid    影院id
movieid 电影id

选座购票详情:

http://m.maoyan.com/show/seats?showId=70157&showDate=2017-12-09

Request:

showId      放映id
showDate 放映时间

2. HttpClient 实现 HTTP 请求

安装 HttpClientModule 模块

app.module.ts

...
import {HttpClientModule} from "@angular/common/http";
... @NgModule({
...
imports: [
...
HttpClientModule,
...
]
...
})
...

创建 provider

终端运行:

ionic g provider movies

movies.ts

import {HttpClient} from '@angular/common/http';
import {Injectable} from '@angular/core'; @Injectable()
export class MoviesProvider { hotMovies: any[]; constructor(public http: HttpClient) {
this.getHotMovies();
} getHotMovies() {
let hotMoviesUrl: string = "https://m.maoyan.com/movie/list.json?type=hot&offset=0&limit=100";
this.http.get(hotMoviesUrl).subscribe(data => {
this.hotMovies = data["data"]["movies"];
});
} }

创建 page

终端运行:

ionic g page movie

movie.html

<ion-header>

  <ion-navbar>
<ion-title>电影</ion-title>
</ion-navbar> </ion-header> <ion-content>
<ion-list>
<button ion-item *ngFor="let movie of moviesProvider.hotMovies">
{{movie["nm"]}}
</button>
</ion-list>
</ion-content>

movie.ts

import {Component} from '@angular/core';
import {IonicPage, NavController, NavParams} from 'ionic-angular'; import {MoviesProvider} from "../../providers/movies/movies"; @IonicPage({
priority: 'high'
})
@Component({
selector: 'page-movie',
templateUrl: 'movie.html',
})
export class MoviePage { constructor(public navCtrl: NavController, public navParams: NavParams, public moviesProvider: MoviesProvider) { } ionViewDidEnter() {
console.log(this.moviesProvider.hotMovies);
} }

3. 一些坑

坑1: 未在 app.module.ts 中导入 HttpClientModule

ionic g provider movies 命令执行后并未在 app.module.ts 中自动导入 HttpClientModule

坑2: Chrome 调试时 CORS 问题

最简单的办法就是给 Chrome 安装 Allow-Control-Allow-Origin 插件了,链接 ==> https://chrome.google.com/webstore/search/Allow-Control-Allow-Origin?hl=zh-CN 第一个就是。

坑3: WKWebView 问题

emmm... 真机调试的时候,Android 端木有问题,显示正常,而 iOS 端啥都不显示,不知道问题出在哪里(我怀疑是 WKWebView 的 CORS 问题,求评论!!!),我的解决办法是,降回到 UIWebView。

首先卸载 Ionic WebView 插件

ionic cordova plugin remove cordova cordova-plugin-ionic-webview --save
ionic cordova platform rm ios
ionic cordova platform add ios
ionic cordova build ios --prod

然后 config.xml

<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />

4. 更多

Angular - HttpClient

Angular - API - HttpClient

Ionic - WKWebView

如有不当之处,请予指正,谢谢~

Ionic3学习笔记(十三)HttpClient 实现 HTTP 请求以及踩过的一些坑的更多相关文章

  1. Android学习笔记之HttpClient实现Http请求....

    PS:最近光忙着考试了....破组成原理都看吐了....搞的什么也不想干...写篇博客爽爽吧....貌似明天就考试了...sad... 学习笔记: 1.如何实现Http请求来实现通信.... 2.解决 ...

  2. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  3. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  4. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  5. Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据

    目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...

  6. python 学习笔记十三 JQuery(进阶篇)

    jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. 安装jQuery 有两个版本的 jQuery 可供下载: Production versio ...

  7. java jvm学习笔记十三(jvm基本结构)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...

  8. cocos2d-x 3.1.1 学习笔记[11] http请求 + json解析

    //http须要引入的头文件和命名空间 #include <network/HttpClient.h> using namespace network; //json须要引入的头文件 #i ...

  9. SharpGL学习笔记(十三) 光源例子:环绕二次曲面球体的光源

    这是根据徐明亮<OpenGL游戏编程>书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你 ...

随机推荐

  1. Evaluation metrics for classification

    Accuracy/Error rate ACC = (TP+TN)/(P+N) ERR = (FP+FN)/(P+N) = 1-ACC Confusion matrix Precision/Recal ...

  2. 拉格朗日插值Python代码实现

    1. 数学原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个lj(x)为拉格朗日基本多项式(或称插值基函数),其表 ...

  3. ae基础二

    纯色文本操作快捷键:选中图层点击快捷键(变换)锚点:a(调节中心点)位置:p(左右移动)(利用位置k帧做动画)缩放:s(水平翻转垂直翻转)旋转:r(围绕中心点(锚点)进行旋转)不透明度:tu选中索引 ...

  4. Linux-进程状态和system函数

    1.进程的5种状态 (1).就绪态. 这个进程当前所有运行条件就绪,只要得到CPU时间就能直接运行. (2).运行态 就绪态时得到了CPU就进入运行态开始运行. (3).僵尸态 进程已经结束但是父进程 ...

  5. jenkins-master-slave节点配置总结

    一.jenkins分布式简单介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 二.jenk ...

  6. python获取当前的日期和时间

    import datetime import time print ("格式参数:") print (" %a 星期几的简写") print (" % ...

  7. iOS 一个新方法:- (void)makeObjectsPerformSelector:(SEL)aSelector;

    NSArray 里面的一个方法, - (void)makeObjectsPerformSelector:(SEL)aSelector: 这是一个类似于执行for循环的方法,可以这样用,当需要删除一个v ...

  8. XEN 3166

    XEN 3166 这题原题是spj,校oj上只用判断yes no,不过也差不多 题意分析之后就是求两个东西: 字典序最小的长度为m的子序列 同时这个字典序严格大于某个字符串 用序列自动机 先尽量相同, ...

  9. idea 连接mysql报错:Access denied for user 'root'@'localhost'(using password:YES)。

    这两天在idea中开发Web项目时,连接MYSQL数据库,出现问题:Access denied for user 'root'@'localhost'(using password:YES).    ...

  10. Pwn-Gcc编译命令