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游戏编程>书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你 ...
随机推荐
- cmd执行jmeter命令生成报告的问题。
现有几个jmeter脚本,准备以命令行的方式执行jmeter脚本,并生成报告. 一.使用python语言处理 1.目录结构 2.说明 jmx目录下是jmeter脚本 result目录下是生成的报告及文 ...
- 吴裕雄--天生自然 JAVA开发学习:变量类型
public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 pu ...
- malloc 底层实现及原理
摘要:偶尔看到面试题会问到 malloc 的底层原理,今天就来记录一下,毕竟学习要“知其所以然”,这样才会胸有成竹. 注:下面分析均是基于 linux 环境下的 malloc 实现.步骤是:先总结结论 ...
- java读取本地json数组并解析
1.本地json位置 2,json数据 {"garbages":[{"id":"/m/011k07","ename":& ...
- 4.docker 简介
1.概念 docker 提供了一个开发 打包 运行 app 的平台 通过 docker engine 把 app 和底层infrastructure隔离开来 2.docker engine 所包含的内 ...
- Matlab高级教程_第四篇:白噪声的MATALB生成方式
1. 白噪声主要是高斯白噪声. 2. 为什么是高斯白噪声? 高斯白噪声:1)这个噪声它是一个随机信号.2)“白”是指其功率谱的常数,这样他的自相关函数是狄拉克函数(冲激函数),由于它的自相关函数是冲激 ...
- Linux inode 理解
inode 硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB).操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性读取一 ...
- windows下快速安装tensorflow
下载安装文件 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 配置pip参数文件 [global] index-url = https://mi ...
- 14 微服务电商【黑马乐优商城】:day04-ES6语法入门
day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) :day02-springcloud(理论篇二) :day ...
- JS 2019-12-03T15:53:23.000+08:00 转化为 YYYY MM DD
js时间格式转化 2019-12-03T15:53:23.000+08:00 转化为 YYYY MM DD var dateee = new Date(createTime).toJSON();var ...