目录

概述

http插件的功能是发送http请求,包括get、head、post请求;http请求相关的控制,如sslpinning、证书、域名;文件的上传和下载,因上传文件需要服务器,本文未提供上传的示例。

JS调用方法

1、导入插件require(“cordova!cordova-plugin-http”);
2、插件提供了8个方法:

  • get(url, params, headers),get请求:url代表链接,params代表参数,headers代表http请求头
  • head(url, params, headers),head请求,参数与get请求一致。
  • post(url, params, headers),post请求,参数与get请求一致。
  • enableSSLPinning(enable),允许或禁止sslpinning方法,enable为boolean类型,取值true或者false。
  • acceptAllCerts(allow),允许或禁止证书方法,allow为boolean类型,取值true或者false。
  • validateDomainName(validate),允许或禁止域名方法,validate为boolean类型,取值true或者false。
  • downloadFile(url, params, headers, filePath),文件下载方法,url代表链接,params代表参数,headers代表请求头,filePath代表文件路径。
  • uploadFile(url, params, headers, filePath, name),文件上传方法,url代表链接,params代表参数,headers代表请求头,filePath代表文件路径,name代表文件名。
define(function(require){
	var $ = require("jquery");
	require("cordova!cordova-plugin-http");
	var utils = require("$UI/demo/plugin/utils");
	var Model = function(){
		this.callParent();
	};
	//成功回调,data.status为请求返回的状态值,data.data为返回的数据
	function success(data){
		alert("状态值:"+data.status+"\n 返回数据:"+data.data);
	}
	//失败回调,data.status为请求返回的状态值,data.data为返回的数据
	function failure(data){
		alert("错误返回状态值:"+data.status+"\n 返回数据:"+data);
	}
	//下载文件成功返回
	function fileSuccess(data){
		alert("标题:"+data.headers+"\n 状态值:"+data.status+"\n 返回数据:"+data.file);
	}
	//上传下载文件失败返回
	function fileFailure(data){
		alert("\n 状态值:"+data.status+"\n 返回数据:"+data.error);
	}
	//get请求
	Model.prototype.getClick = function(event){
		cordovaHTTP.get("http://www.baidu.com", {}, {}, success,failure);
	};
	//head请求
	Model.prototype.headClick = function(event){
		cordovaHTTP.head("http://www.baidu.com", {}, {}, success,failure);
	};
	//post请求
	Model.prototype.postClick = function(event){
		cordovaHTTP.post("http://www.baidu.com", {}, {}, success,failure);
	};
	//SSLPinning协议开关
	Model.prototype.enableSSLPinningClick = function(event){
		cordovaHTTP.enableSSLPinning("true",function success (){alert("允许SSL pinning")},function fail(){alert("禁止SSL pinning")});
	};
	//证书开关
	Model.prototype.acceptAllCertsClick = function(event){
		cordovaHTTP.enableSSLPinning("true",function success (){alert("允许证书")},function fail(){alert("禁止证书")});
	};
	//域名开关
	Model.prototype.validateDomainNameClick = function(event){
		cordovaHTTP.acceptAllCerts("true",function success (){alert("允许域名")},function fail(){alert("禁止域名")});
	};
	//文件下载
	// 路径"cordova.file.dataDirectory"的含义参考cordova-plugin-file插件的介绍:http://docs.wex5.com/cordova-plugin-file/
	Model.prototype.downloadFileClick = function(event){
	    cordovaHTTP.downloadFile("http://192.168.1.104:8080/1.jpg", {}, {},cordova.file.dataDirectory+"/1.jpg",fileSuccess,fileFailure);
	};
	//上传文件
	Model.prototype.uploadFileClick = function(event){
		cordovaHTTP.uploadFile("http://192.168.1.104:8080/", {}, {},cordova.file.dataDirectory+"/1.jpg","picture",success,fileFailure);
	};
	Model.prototype.modelModelConstructDone = function(event) {
		utils.showCode(this,"getClick").showCode("headClick").showCode("postClick").showCode("enableSSLPinningClick").showCode("acceptAllCertsClick").showCode("validateDomainNameClick").showCode("downloadFileClick").showCode("uploadFileClick").prettyPrint();
	};

	return Model;
});

注意事项

1、上传文件需要服务器接收,本文举例的url用了tomcat的首页,插件执行该方法的时候会返回成功,只代表该url能成功访问,设备上也确实存在该文件。不代表url的地址正确接收了该文件。
2、上传下载的filepath参数,使用了file插件提供的方法。关于filepath的使用方法和对应目录的权限等参考cordova-plugin-file插件的介绍:http://docs.wex5.com/cordova-plugin-file/。
3、需要下载的文件,可以是网上的资源,也可以是本地服务器里的资源,本文例子的资源放到了tomcat服务器目录,apache-tomcat\webapps\ROOT,启动tomcat服务器后放在该目录下的文件可以被访问和下载。