$http通信

       在做活动通的同步功能时,需要手机端向服务器端提交数据,这时需要用到$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
 

猜你喜欢

转载自moneyinto.iteye.com/blog/2104327