在做活动通的同步功能时,需要手机端向服务器端提交数据,这时需要用到$http,使用post请求方式。
在网上了解到http通信中有POST和GET的请求方式。GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。POST方法的参数放在Http请求中。
对于两者的比较,我了解到,POST请求向服务器传送数据,数据放在HTML HEADER内一起传送到服务端URL地址,数据对用户不可见,传送的数据量比较大,一般不受限制,安全性高。而GET把参数提交到URL中,值和表单的内的各个字段一一对应,且传送的数据量较小,不到2kb,安全性低。
下面来说一下代码:
客户端的代码:
$http.post('http://192.168.1.116/synchronization.json',{"username":name})
http://192.168.1.116 //服务器的地址 synchronization //服务器接受到请求后调用的方法 {"username":name} //传入的数据
活动通的代码:
def synchronization ...... //params[:username]为接收到的值 end
看一个活动通的登录的例子:
party_bid手机应用的代码:
$scope.login_party_bid = function () { var name = $scope.name; var password = $scope.password; $http.post('http://192.168.1.116/login_activity.json', {"userName": name, "userPassword": password}).success(function (back) { if (back.data == 'true') { $location.path('/activity_list'); localStorage.setItem('username',name); } else { $scope.flash = "alert alert-danger"; $scope.error = "帐号或密码不正确,请重新输入"; $location.path('/'); } }); }
活动通服务器的代码:
def login_activity user = User.find_by_name(params[:userName]) respond_to do |format| //向客户端返回值 if user && user.authenticate(params[:userPassword]) format.json { render json: {data: 'true'} } #返回true else format.json { render json: {data: 'false'} } #返回false end end end