对于想了解swiftHttp的使用的读者,本文将是一篇不可错过的文章,我们将详细介绍swiftthrows,并且为您提供关于1、查看操作系统2、查看命令帮助的几种方式3、pwd的使用4、mkdir的使
对于想了解swift Http 的使用的读者,本文将是一篇不可错过的文章,我们将详细介绍swift throws,并且为您提供关于1、查看操作系统 2、查看命令帮助的几种方式 3、pwd 的使用 4、mkdir 的使用、angularJS中-$route路由-$http(ajax)的使用、ASP 服务端 HTTP 的使用、dialog 的使用 包括 FLAG_DIM_BEHIND 和 dimAmount 的使用的有价值信息。
本文目录一览:- swift Http 的使用(swift throws)
- 1、查看操作系统 2、查看命令帮助的几种方式 3、pwd 的使用 4、mkdir 的使用
- angularJS中-$route路由-$http(ajax)的使用
- ASP 服务端 HTTP 的使用
- dialog 的使用 包括 FLAG_DIM_BEHIND 和 dimAmount 的使用
swift Http 的使用(swift throws)
1、定义一个协议:以后需要使用网络请求地方,实现请求就ok
//自定义http协议
protocol HttpProtocol{
//定义一个方法接收一个字典
func didRecieveResults(resultes:NSDictionary)
}
class HttpController:NSObject{
//定义一个可选代理
var delegate:HttpProtocol?
//定义一个方法运过来获取网络数据,接收参数为网址
func onSearch(url:String){
//定义一个NSURL
var nsUrl:NSURL=NSURL(string: url)!
//定义一个NSURLRequest
var request:NSURLRequest=NSURLRequest(URL: nsUrl)
//异步获取数据
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response:NSURLResponse!,data:NSData!,error:NSError!)->Void in
//由于我们获取的数据是json格式,所以我们可以将其转化为字典。
var jsonResult:NSDictionary=NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
//将数据传回给代理
self.delegate?.didRecieveResults(jsonResult)
})
}
}
2.在实现协议的类里重写didRecieveResults就行,如果不想用字典,可以转成String,修改协议里的网络请求即可。
func didRecieveResults(resultes:NSDictionary)
{
//do something
}
1、查看操作系统 2、查看命令帮助的几种方式 3、pwd 的使用 4、mkdir 的使用
1、如何查看操作系统
1.1[root@VM_86_3_centos zhanghao]# uname -m(32and64)
x86_64
1.2[root@VM_86_3_centos zhanghoc]# uname -a
Linux VM_86_3_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
1.3[root@VM_86_3_centos zhanghao]# ls -ld /lib64
lrwxrwxrwx. 1 root root 9 Apr 21 2016 /lib64 -> usr/lib64
1.4 [root@VM_86_3_centos zhanghao]# cat /etc/redhat-release (版本)
CentOS Linux release 7.2.1511 (Core)
1.5 [root@VM_86_3_centos zhanghao]# uname -r(内核)
3.10.0-514.26.2.el7.x86_64
2. 查看命令的几种方法
2.1 [命令] --help 适用于一般命令,非内置命令
2.2 man [命令] 适用于一般命令,非内置命令
2.3 help [命令] 适用于内置命令
3、pwd 的使用
[root@VM_86_3_centos /]# help pwd
pwd: pwd [-LP]
Print the name of the current working directory.(打印当前工作目录的名称)
Options:(备选文案、此处为选项)
-L print the value of $PWD if it names the current working (打印 pwd 的值,如果它命名当前工作)
directory(目录)
-P print the physical directory, without any symbolic links(打印物理录,不带任何符号链接)
By default, `pwd'' behaves as if`-L'' were specified.(默认情况下,“pwd” 的行为就像指定了 “-l” 一样)
Exit Status:(退出状态)
Returns 0 unless an invalid option is given or the current directory(除非给定无效选项或当前目录,否则返回 0)
cannot be read.(无法读取)
[root@VM_86_3_centos /]# echo $PWD
/
[root@VM_86_3_centos /]# pwd -L
/
[root@VM_86_3_centos /]# pwd
/
[root@VM_86_3_centos /]# cd /etc/init.d/
[root@VM_86_3_centos init.d]# pwd
/etc/init.d
[root@VM_86_3_centos init.d]# pwd -L
/etc/init.d
[root@VM_86_3_centos init.d]# pwd -P
/etc/rc.d/init.d
4、mkdir 的使用
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
[root@VM_86_3_centos ~]# mkdir test/a/b
mkdir: cannot create directory ‘test/a/b’: No such file or directory
[root@VM_86_3_centos ~]# mkdir -p test/a/b
[root@VM_86_3_centos ~]# tree test
-bash: tree: command not found
[root@VM_86_3_centos ~]# mkdir -pv test/a/b/c/d/e
mkdir: created directory ‘test/a/b/c’
mkdir: created directory ‘test/a/b/c/d’
mkdir: created directory ‘test/a/b/c/d/e’
创建有规律的多目录(此处数字为文件名)
[root@VM_86_3_centos ~]# echo 1 2 3 4
1 2 3 4
[root@VM_86_3_centos ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@VM_86_3_centos ~]# mkdir -pv test/ {1..3}/{4..6}
mkdir: created directory ‘1/5’
mkdir: created directory ‘1/6’
mkdir: created directory ‘2/5’
mkdir: created directory ‘2/6’
mkdir: created directory ‘3/5’
mkdir: created directory ‘3/6’
angularJS中-$route路由-$http(ajax)的使用
后台请求使用的是nodeJS驱动(后面帖代码),很简单的RESTFUL,页面使用的是bottstarp3.0(懒人神器);
第一个例子:
在本地架设NODEJS,angular的所有请求都是请求本地的3000端口,这个例子展示的是angular用GET请求服务器的list.json,1.json,2.json等文件;
POST请求/0和/id这两个地址:
运行下面代码
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <Metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <title>angular</title> <Metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"> <scriptsrc="http://cdn.bootcss.com/jquery/2.1.1/jquery.js"></script> <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular.min.js"></script> <linkhref="http://cdn.bootcss.com/bootstrap/3.3.1/css/bootstrap.css"rel="stylesheet"> <!-- <scriptsrc="http://cdn.bootcss.com/underscore.js/1.7.0/underscore-min.js"type="text/javascript"></script> --> <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-resource.min.js"></script> <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-route.min.js"></script> </head> <bodyng-app="app"> <scripttype="text/javascript">varapp=angular.module("app",["ngResource",'ngRoute']);</script> <div> <divhttps://www.jb51.cc/tag/301/" target="_blank">301_4441@"> </div> <divng-controller="reso"> <table> <tr> <td>name</td> <td>age</td> </tr> <trng-repeat="iinusers"> <td>{{i.name}}</td> <td>{{i.age}}</td> </tr> </table> <buttonng-click="update(1)"> query_1.json</button> <buttonng-click="update(2)"> query_2.json</button> <buttonng-click="update(0)"> GET_0.json</button> <buttonng-click="post(0)"> POST_0.json</button> <table> <trng-repeat="iinmsgs"> <tdhttps://www.jb51.cc/tag/gal/" target="_blank">galert">{{i.id}}</td> </tr> </table> </div> </div> <scripttype="text/javascript">//所有的依赖都要在外部定义好; varapp=angular.module("app",'ngRoute']); app.factory('Geek',function($resource){varurl="http://127.0.0.1:3000";//直接新建一个REST服务,相当于提供了一堆请求的合集; return$resource(url+"/:id.json",{},{ query:{ method:"GET",params:{ id:"list" },isArray:true },get:{ method:"GET",params:{ id:"0" } },save:{ method:"POST",params:{ id:"id" } } }); }); app.factory("http",function($http){varurl="http://127.0.0.1:3000";returnfunction(search,data){return$http.post(url+search,data); }; });functionreso($scope,Geek,http,$rootElement){ $scope.users=Geek.query();//$scope.post= window.root=$rootElement; $scope.post=function(id){ http("/0").then(function(r){vardata=r.data;//vardata=JSON.stringify(r.data); //varaEl=angular.element('<divrole="alert">'+data+"</div>"); //root.append(aEl) $scope.msgs=data.list; x=msgs });//有加了一个请求数据就报了跨域问题,卧槽; //而且请求的方式变成了OPTION,我读书少别逗我啊; http("/0",id).then(function(r){vardata=r.data; }); }; $scope.update=function(id){ Geek.query({ id:id }).$promise.then(function(r){ $scope.users=r; }) }; };</script> </body> </html>
这个例子的gruntFile.json文件是这样的,用了nuysoft的Mock,通过npm install Mockjs,不要忘记了
copycode.gif">
{"name":"nono","version":"0.0.0","description":"forwatch","main":"Gruntfile.js","dependencies":{"grunt":"~0.4.5","express":"~3.15.2","grunt-contrib-connect":"~0.6.0","grunt-contrib-watch":"~0.5.3" },"devDependencies":{},"scripts":{"test":"echo\"Error:notestspecified\"&&exit1" },"repository":{"type":"git","url":"sqqihao.github.com" },"keywords":["nono" ],"author":"nono","license":"__MIT__"}
nodejs的文件内容如下(安装nodejs很简单的,下载以后复制到全局变量即可哦)
varexpress=require('express'),http=require('http'),path=require('path');varMock=require('mockjs');varapp=express();//allenvironmentsapp.set('port',process.env.PORT||3000); app.set('views',__dirname+'/views'); app.set('viewengine','jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodoverride()); app.use(app.router); app.use(express.static(path.join(__dirname,'public')));//developmentonlyif('development'==app.get('env')){ app.use(express.errorHandler()); }; app.all('*',function(req,res,next){ res.header("Access-Control-Allow-Origin","*"); res.header("Access-Control-Allow-Headers","X-Requested-With"); res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By",'3.2.1') res.header("Content-Type","application/json;charset=utf-8"); next(); }); app.get('/',res){ res.setHeader('Content-Type','application/json;charset=utf-8'); res.send("youarewelcom!"); }); app.get("/list.json",'application/json;charset=utf-8'); res.send([{ name:"nono",age:26 },{ name:"hehe",age:24 }]); }); app.get("/0.json",'application/json;charset=utf-8'); res.send([{ name:"youare",age:"welcome" }]); }); app.get("/1.json",'application/json;charset=utf-8'); res.send([{ name:"yy",age:22 },{ name:"niubiu",age:50 }]); }); app.get("/2.json",'application/json;charset=utf-8'); res.send([{ name:"ddp",age:33 },{ name:"makiro",age:20 }]); }); app.post("/0",'application/json;charset=utf-8');vardata=Mock.mock({'list|1-10':[{'id|+1':1 }] }); data.list=Mock.Random.shuffle(data.list); res.send(data); }); app.post("/id",'application/json;charset=utf-8'); res.send("yy"); }); http.createServer(app).listen(app.get('port'),function(){ console.log('Expressserverlisteningonport'+app.get('port')); });
第二个例子:
我们在firefox或者是chrome里面一直用console.log 等打log的方法,angular对这些方法进行了简单的封装:
score.js/1.7.0/underscore-min.js"type="text/javascript"></script> --> <!-- <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-resource.min.js"></script> <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-route.min.js"></script> --> </head> <bodyng-app="app"> <scripttype="text/javascript">varapp=angular.module("app",[]);</script> <div> <divhttps://www.jb51.cc/tag/301/" target="_blank">301_4441@"> $log()的使用,主要用来调试:</div> <divng-controller="LogController"> <div> <inputtype="text"ng-model="message"/> <buttonng-click="$log.log(message)">log</button> <buttonng-click="$log.warn(message)">warn</button> <buttonng-click="$log.info(message)">info</button> <buttonng-click="$log.error(message)">error</button> </div> </div> <scripttype="text/javascript"> app.controller('LogController',['$scope','$log',function($scope,$log){ $scope.$log=$log; $scope.message='HelloWorld!'; }]);</script> </div> </body> </html>
例子3:
angular的路由处理,ng-view的使用,所有对应路由的模板会在 标志有ng-view属性的div中显示. 我们通过url控制页面对应的逻辑是个好主意么么哒;
score.js/1.7.0/underscore-min.js"type="text/javascript"></script> <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-resource.min.js"></script> <scriptsrc="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-route.min.js"></script> </head> <bodyng-app="app"> <scripttype="text/javascript">varapp=angular.module("app",['ngRoute']);</script> <!--使用angular的路由处理--> <div> <divhttps://www.jb51.cc/tag/301/" target="_blank">301_4441@"> ng-view的实例</div> <divng-controller="route"> <ulrole="tablist"> <lirole="presentation"ng-repeat="idin[1,2,3]"> <ahref="#/list/{{id}}">ID{{id}}</a> </li> </ul> <divng-view></div> </div> </div> <scripttype="text/javascript"> app.controller("route",function(){});//app.controller("hehe",); //路由是定义在app的config里面的; app.config(function($routeProvider,$locationProvider){ console.log($routeProvider);/* app.controller("hehe",$routeParams){ $scope.ver=$routeParams.bookId //$scope });*/ $routeProvider.when('/list/:bookId',{ template:'<div>Thisisinpage:<ahref="#/list/{{ver}}/detail">href-to-{{ver}}</a></div>',controller:function($scope,$routeParams){ $scope.ver=$routeParams.bookId } }) .when('/list/:bookId/detail',{ template:"<div>thisisdetail:{{bookId}}</div><ahref='#/list/{{bookId}}'>back</a>",$routeParams){ console.log($routeParams) $scope.bookId=$routeParams.bookId; } })//剩下的走这路由.otherwise; })</script> </body> </html>
ASP 服务端 HTTP 的使用
在制作网站的过程中,常常需要用到HTTP来与服务端进行数据交互,主要分为客户端调用和服务端调用。在强类型编程语言(Java、C#等)中,使用 HTTP 是很方便的,因为都有相应的很成熟的类库,也有详细的API文档可查阅。但是古老的 ASP 却并没有什么完整的文档可以参考(至少我没有找到,菜鸟教程和W3不算)。偶尔我会编写一些 ASP 相关的东西,会去了解这些东西,因此,本文特记录下在 ASP 编写的网站中,如何在服务端发起 HTTP 请求。
客户端HTTP调用
客户端一般是在 JavaScript
中使用 XMLHttpRequest
对象进行操作,或者使用 jQuery
类库的 Ajax
函数。相信这部分许多朋友都已经很熟练了,也很简单,就不赘述了。(若有不知道的,建议去菜鸟教程或者W3School上看看)
服务端HTTP调用 ★
ASP 服务端的 HTTP 调用可用如下两个对象:
Msxml2.XMLHTTP
:会自动保存 Cookie, Session 等;Msxml2.ServerXMLHTTP
:不保留任何状态。
可根据实际情况进行选择。
直接上代码,如有疑问,或者代码有误,请留言。
(由于长期使用C#
,所以这里的函数注释使用了C#
的XML注释方式)
''<summary>
'' 发起HTTP POST请求。
''</summary>
''<param name="url" type="String"> 要请求的地址。 </param>
''<param name="data" type="String"> HTTP BODY内容。 </param>
''<return> 返回服务器响应字符串 </return>
Function HttpPost(url, data)
Dim http
Set http = Server.CreateObject("Msxml2.ServerXMLHTTP")
With http
.Open "POST", url, false
.setRequestHeader "Content-Length",Len(post_data)
.setRequestHeader "Content-Type","application/x-www-form-urlencoded;charset=UTF-8"
.Send data
End With
HttpPost = BytesToString(http.ResponseBody,"GB2312")
Set http = Nothing
End Function
''<summary>
'' 使用指定的编码格式将二进制转换为字符串。
''</summary>
''<param name="bytes" type="String"> 要转换的二进制内容。 </param>
''<return> 返回字符串 </return>
Function BytesToString(bytes, charset)
On Error Resume Next
Dim objstream
Set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1 ''指定或返回的数据类型,可选参数为:adTypeBinary =1 adTypeText =2
objstream.mode = 3 ''指定或返加模式。
objstream.Open ''打开ADODB.Stream对象。Object.Open(Source,\[Mode\],\[Options\],\[UserName\],\[Password\]) 参数说明:Sourece 对像源,可不指定
objstream.Write bytes ''将指定的数据装入对像中。Object.Write(Buffer) 参数说明:Buffer 为指定的要写入的内容。
objstream.Position = 0 ''指定或返加对像内数据的当前指针。
objstream.Type = 2 ''指定或返回的数据类型,可选参数为:adTypeBinary =1 adTypeText =2
objstream.Charset = charset ''编码格式
BytesToString = objstream.ReadText ''读取指定长度的文本。Object.ReadText(NumChars) 参数说明:NumChars 为指定的要读取的长度,不指定则读取全部。
objstream.Close ''关闭ADODB.Stream对象
Set objstream = Nothing
End Function
''<summary>
'' 使用指定的编码格式将二进制转换为字符串。
''</summary>
''<param name="bytes" type="String"> 要转换的二进制内容。 </param>
''<return> 返回字符串 </return>
Function StringToBytes(input, charset)
On Error Resume Next
Dim objstream
Set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 2 ''指定或返回的数据类型,可选参数为:adTypeBinary =1 adTypeText =2
objstream.mode = 3 ''指定或返加模式。
objstream.Open ''打开ADODB.Stream对象。Object.Open(Source,\[Mode\],\[Options\],\[UserName\],\[Password\]) 参数说明:Sourece 对像源,可不指定
objstream.WriteText input ''将指定的文本字符串写入 Stream 对象。Object.WriteText(Data, Options) 参数说明:Data String 值,包含要写入的字符文本。Options 可选。StreamWriteEnum 值,指定是否在指定字符串的结尾写入分行符字符。
objstream.Position = 0 ''指定或返加对像内数据的当前指针。
objstream.Type = 1 ''指定或返回的数据类型,可选参数为:adTypeBinary =1 adTypeText =2
objstream.Charset = charset ''编码格式
StringToBytes = objstream.Read ''从二进制 Stream 对象读取指定的字节数。Object.Read(NumBytes) 参数说明:NumBytes 可选。Long 值,指定要从文件或 StreamReadEnum 值 adReadAll(默认值)读取的字节数。
objstream.Close ''关闭ADODB.Stream对象
Set objstream =Nothing
End Function
其他
- ASP 中主要使用
VBScript
和服务端 JavaScript
两种语言,建议尽量使用 VBScript,因此本人所有 ASP 系列的文章均是使用 VBScript ,特此说明。 - 文中使用到了另一个对象
ADODB.Stream
,请参考我的另一篇文章《ASP之ADODB.Stream》
dialog 的使用 包括 FLAG_DIM_BEHIND 和 dimAmount 的使用
首先自定义一个类,j 继承自 dialog 类。
设置透明度,主要设置的是 dialog 自身的透明度
WindowManager.LayoutParams lp=dialog.getWindow().getAttributes(); lp.alpha=1.0f; dialog.getWindow().setAttributes(lp);
alpha 在 0.0f 到 1.0f 之间。1.0 完全不透明,0.0f 完全透明,自身不可见。
设置幕布,也就是本 dialog 的背景层。
dialog.setContentView(R.layout.dialog); WindowManager.LayoutParams lp=dialog.getWindow().getAttributes(); lp.dimAmount=1.0f; dialog.getWindow().setAttributes(lp); dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dimAmount 在 0.0f 和 1.0f 之间,0.0f 完全不暗,即背景是可见的 ,1.0f 时候,背景全部变黑暗。
如果要达到背景全部变暗的效果,需要设置 dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
,否则,背景无效果。
此方法可以用来设置浮动层。呵呵!
今天关于swift Http 的使用和swift throws的分享就到这里,希望大家有所收获,若想了解更多关于1、查看操作系统 2、查看命令帮助的几种方式 3、pwd 的使用 4、mkdir 的使用、angularJS中-$route路由-$http(ajax)的使用、ASP 服务端 HTTP 的使用、dialog 的使用 包括 FLAG_DIM_BEHIND 和 dimAmount 的使用等相关知识,可以在本站进行查询。
本文标签: