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

目录

  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. 宝塔面板,Typecho,Lsky Pro图床安装

    宝塔面板,Typecho,Lsky Pro图床安装 本文安装包:链接:https://cloud.cangye.me/s/l3i4avjl 密码是宝塔面板4个汉字拼音首字母小写(防止被爬) 一,宝塔面 ...

  2. Evaluation metrics for classification

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

  3. Eclipse打包Jar单独使用

    今天做了一个刷***的功能,代码很简单,只有几十行代码,我开始是在eclipse里面跑的,后面觉得在里面跑不舒服,我就想把他单独作为一个jar文件单独运行,里面使用了第三方jar包,下面记录一下步骤. ...

  4. goweb-goweb基础

    goweb DNS工作原理 在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析. 如果hosts里没 ...

  5. matlab设置mex失败

    更新 使用matlab2017b时,又报错, >> mex -setup 警告: Xcode is installed, but its license has not been acce ...

  6. 小程序中map的取值和赋值

    1.初始化 resultMap: { "near": [], "join": [], "publish": [] } 2.js中直接取 co ...

  7. Ansible--初始ansible

    一.ansible简介 ansible是一种自动化运维工具.实现批量操作系统配置.批量程序部署.批量命令运行等功能. ansible工作在agentless模式下,并且具有幂等性(幂等性不会重复执行相 ...

  8. Python基础——类new方法与单例模式

    介绍: new方法是类中魔术方法之一,他的作用是给类实例化开辟一个内存地址,并返回一个实例化,再由__init__对这个实例进行初始化,故它的执行肯定就是在初始化方法__init__之前了.new方法 ...

  9. python学习笔记(28)-unittest单元测试-执行用例

    执行用例 #写一个测试类 import unittest import HTMLTestRunnerNew #写好的模块可以直接调用 #import HTMLTest #测试报告模板 from cla ...

  10. NLP-文本分类之开始(0)

    转眼读研一年了,开题也开了,方向也定了,大方向就是NLP,然而从一开始的上课.做项目开题什么的(自己也比较贪玩,以前不打游戏,结果王者上瘾了),到现在对NLP是一知半解,不对,半解都没有半解,然后时间 ...