Ionic3学习笔记(十三)HttpClient 实现 HTTP 请求以及踩过的一些坑
本文为原创文章,转载请标明出处
目录
- 猫眼API
- HttpClient 实现 HTTP 请求
- 安装 HttpClientModule 模块
- 创建 provider
- 创建 page
- 一些坑
- 坑1: 未在
app.module.ts中导入HttpClientModule - 坑2: Chrome 调试时 CORS 问题
- 坑3: WKWebView 问题
- 坑1: 未在
- 更多
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 请求以及踩过的一些坑的更多相关文章
- Android学习笔记之HttpClient实现Http请求....
PS:最近光忙着考试了....破组成原理都看吐了....搞的什么也不想干...写篇博客爽爽吧....貌似明天就考试了...sad... 学习笔记: 1.如何实现Http请求来实现通信.... 2.解决 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...
- python 学习笔记十三 JQuery(进阶篇)
jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. 安装jQuery 有两个版本的 jQuery 可供下载: Production versio ...
- java jvm学习笔记十三(jvm基本结构)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...
- cocos2d-x 3.1.1 学习笔记[11] http请求 + json解析
//http须要引入的头文件和命名空间 #include <network/HttpClient.h> using namespace network; //json须要引入的头文件 #i ...
- SharpGL学习笔记(十三) 光源例子:环绕二次曲面球体的光源
这是根据徐明亮<OpenGL游戏编程>书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你 ...
随机推荐
- c#之初识结构(Struct)
C# 结构(Struct) 首先结构是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构.通俗说:结构就是一个可以包含不同数据类型的集合.它是一种可以自 ...
- Kattis dragonball1 Dragon Ball I(最短路)
There is a legendary tale about Dragon Balls on Planet X: if one collects seven Dragon Balls, the Dr ...
- PAT Advanced 1070 Mooncake (25) [贪⼼算法]
题目 Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many typ ...
- Linux inode 理解
inode 硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB).操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性读取一 ...
- jupyter notebook的扩展插件
具体安装使用,请参考 https://github.com/ipython-contrib/IPython-notebook-extensions
- BTree非递归
preorder void PreOrder(BTNode* b) { BTNode* p = b; SqStack* st; InitStack(st); if (b != NULL) { Push ...
- Java之代码块
package com.atguigu.java3;/* * 代码块(或初始化块) * * 1. 代码块的作用:用来初始化类.对象 * 2. 代码块如果有修饰的话,只能使用static. * 3. 分 ...
- 如何离开/退出/停用Python virtualenv
我正在使用virtualenv和virtualenvwrapper. 我可以使用workon命令在virtualenv之间切换. me@mymachine:~$ workon env1 (env1)m ...
- 常见 Web 安全攻防总结
Web 安全的对于 Web 从业人员来说是一个非常重要的课题,所以在这里总结一下 Web 相关的安全攻防知识,希望以后不要再踩雷,也希望对看到这篇文章的同学有所帮助.今天这边文章主要的内容就是分析几种 ...
- 项目中关于RPC 和rocketMQ使用场景的感受
在花生待的这半年,切身体会了系统之间交互场景的接口技术实现方式,个人总结.仅供参考: 1.关于rpc接口,一般情况下 都是同步的.A系统的流程调用B系统.等着B返回,根据返回结果继续进行A接下来的流程 ...