GVKun编程网logo

swift Http 的使用(swift throws)

4

对于想了解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)

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、查看操作系统 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)的使用

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 的使用

ASP 服务端 HTTP 的使用

在制作网站的过程中,常常需要用到HTTP来与服务端进行数据交互,主要分为客户端调用和服务端调用。在强类型编程语言(Java、C#等)中,使用 HTTP 是很方便的,因为都有相应的很成熟的类库,也有详细的API文档可查阅。但是古老的 ASP 却并没有什么完整的文档可以参考(至少我没有找到,菜鸟教程和W3不算)。偶尔我会编写一些 ASP 相关的东西,会去了解这些东西,因此,本文特记录下在 ASP 编写的网站中,如何在服务端发起 HTTP 请求。

客户端HTTP调用

客户端一般是在 JavaScript 中使用 XMLHttpRequest 对象进行操作,或者使用 jQuery 类库的 Ajax 函数。相信这部分许多朋友都已经很熟练了,也很简单,就不赘述了。(若有不知道的,建议去菜鸟教程或者W3School上看看)

服务端HTTP调用 ★

ASP 服务端的 HTTP 调用可用如下两个对象:

  1. Msxml2.XMLHTTP :会自动保存 Cookie, Session 等;
  2. 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 的使用

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 的使用等相关知识,可以在本站进行查询。

本文标签: