iOS post和get请求

get和post请求的区别

1,post请求 请求地址和参数分离,比get更安全

2,get请求能上传数据不能上传文件,而post两者都可以

3,get请求在浏览器中的字符串长度最大限制为1024,post没有限制

4,post上传文件 文件大小的限制是由后台设置的

下面是一个登录、上传头像、调用相册的简单功能,来帮助理解post的功能

【AFN POST用法】


    let manager = AFHTTPSessionManager()

    //设置响应的数据类型为NSData,如果不设置可能会自动解析成字典或数组
    manager.responseSerializer = AFHTTPResponseSerializer()
    
    //af设置请求头的方法
    //sessionManager.requestSerializer = AFHTTPRequestSerializer()
    //sessionManager.requestSerializer.setValue("", forHTTPHeaderField: "")

    // af执行post
    //如果需要上传文件,就用带constructingBodyWithBlock的方法
    //如果不需要上传文件,就选不带constructingBodyWithBlock的方法
    //constructingBodyWithBlock里设置需要上传的文件   
    //parameters为网络请求的参数,需要以键值对的形式存到字典中

    //启动拥有上传文件功能的post请求
    manager.POST(urlStr, parameters: bodyDic, constructingBodyWithBlock: { (formData) in
        //在这个闭包里设置需要上传的文件
            
        //将图片转成NSData
        let imageData = UIImagePNGRepresentation(image)!
            
        //第一个参数是需要上传的文件,第二个是后台规定的参数名
        //第三个文件名,但是后台一般不用,所以意义不大
        //第四个后台规定的文件类型。例:"image/png" "image/jpeg" "text/html" "text/json" "text/xml"等
        formData.appendPartWithFileData(imageData, name: "headimage", fileName: "1.png", mimeType: "image/png")
            
        }, progress: nil, success: { (dataTask, responseObject) in
            //上传成功的回调
            let dic = try! NSJSONSerialization.JSONObjectWithData(responseObject as! NSData, options: .AllowFragments)
            print(dic)
                
        }) { (dataTask, error) in
            print("上传时网络发生问题")
    }


使用系统相册

//打开系统相册
    let imagePickerController = UIImagePickerController()//照片选择器
    imagePickerController = self//
    self.presentViewController(imagePickerController, animated: true) {}

//选择照片后触发的方法
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

        //获取点击到的图片
        let image = info[UIImagePickerControllerOriginalImage] as! UIImage

        //将图片转成NSData
        let imageData = UIImagePNGRepresentation(image)!

        imagePickerController.dismissViewControllerAnimated(false, completion: nil)
    }

你可能感兴趣的:(iOS post和get请求)