前言
环境介绍
本文功能点
命令行完成后的目录接口(先贴出来以后方便对比)![]() 一个干净的tabs目录结构
![]() image.png
import {Injectable} from '@angular/core';
import {Http, Response, Headers, RequestOptions} from '@angular/http';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class HttpService {
loader: any;
constructor(private http: Http) {
}
public get(url: string, paramObj: any) {
return this.http.get(url this.toQueryString(paramObj))
.toPromise()
.then(res => this.handleSuccess(res.json()))
.catch(error => this.handleError(error));
}
public post(url: string, paramObj: any) {
//x-www-form-urlencoded
let headers = new Headers({'Content-Type': 'application/json'});
return this.http.post(url, paramObj, new RequestOptions({headers: headers}))
.toPromise()
.then(res => this.handleSuccess(res.json()))
.catch(error => this.handleError(error));
}
private handleSuccess(result) {//请求成功的回调
if (result && result.resultCode != '0000') {
let params = {
title: '错误!',
subTitle: result.message,
}
}
return result;
}
private handleError(error: Response | any) {//请求失败的回调
let msg = '请求失败';
if (error.status == 0) {
msg = '请求地址错误';
}
if (error.status == 400) {
msg = '请求无效';
console.log('请检查参数类型是否匹配');
}
if (error.status == 404) {
msg = '请求资源不存在';
console.error(msg ',请检查路径是否正确');
}
let params = {
title: '错误!',
subTitle: msg,
}
return {success: false, msg: msg};
}
/**
* @param obj 参数对象
* @return {string} 参数字符串
* @example
* 声明: var obj= {'name':'zhangsan',sex:1};
* 调用: toQueryString(obj);
* 返回: '?name=zhangsan&age=1'
*/
private toQueryString(obj) {
let ret = [];
for (let key in obj) {
key = encodeURIComponent(key);
let values = obj[key];
if (values && values.constructor == Array) {//数组
let queryValues = [];
for (let i = 0, len = values.length, value; i < len; i ) {
value = values[i];
queryValues.push(this.toQueryPair(key, value));
}
ret = ret.concat(queryValues);
} else { //字符串
ret.push(this.toQueryPair(key, values));
}
}
let str = obj?'?' ret.join('&'):''
return str;
}
private toQueryPair(key, value) {
if (typeof value == 'undefined') {
return key;
}
return key '=' encodeURIComponent(value === null ? '' : String(value));
}
}
![]() app.module.tsg
进行到这一步的时候,配置这块儿就基本完成了。然后我们得把项目跑起来。测试一请求是否能成功。验证接口这块儿。我找了中国气象局的免费API做测试.地址如下:
4.1 在homePage页面新建一个按钮。绑定一个事件(PS:homePage路径:src/pages/home/home.html);修改效果入下 ![]() home.html
上图是有一点问题的。我截图的时候没有注意。homeService.ts此文件。大家不用在意。不会影响这个例子的运行的
![]() image.png
到这里的时候基本完成了。可以进入你的ionic项目目录,执行ionic serve命令。启动此项目。看效果。最终效果如图 ![]() image.png
这样的话就是请求成功的!
![]() image.png
2.moduleNameService.ts ![]() image.png
3.使用方法(PS:红色框外的代码) ![]() image.png
好了。到这里我http请求所遇到的问题都有描述了。由于我也是才入坑ionic。代码写的不是很规范。各位看官担待 |
|
来自: liang1234_ > 《Hybird APP》