• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift&Node使用Alamofire进行Post

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这篇博客主要实现Swift客户端和NodeJS后台的Post、Get请求实现。

我是一个略有点讨厌重复使用工具的人,比如这些基本功能完全可以用OC和PHP等替代,但是没办法,现在知识更新的太快啦,Swift和NodeJS这么热,不去看看还会跟不上时代,里面一些特性也是让人大开眼界。

下面就来说说实现吧。

 

Swift客户端:

Swift中的原生HTTP请求方式有(和OC中一样)

1.NSURLConnection的sendSynchronousRequest方法(自iOS9.0起被废除)

2. NSURLSession的dataTaskWithRequest方法可以进行Get或者Post请求

(另外NSURLSession的downloadTaskWithRequest方法可以下载文件,uploadTaskWithRequest方法可以上传文件等

这些就不在这篇博客里写了,在此主要实现使用第三方Alamofire的方法(类似OC里的AFNetworking)

Alamofire:https://github.com/Alamofire/Alamofire

 

Swift客户端提交:

 

//
//  ViewController.swift
//  SwiftUrlSessionDemo
//
//  Created by shen on 15/11/25.
//  Copyright © 2015年 shen. All rights reserved.
//

import UIKit
import Alamofire

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        testGet()
        testPost()
        testUrlSession()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func testGet(){
        let para=["getpara1": "getxcode","getpara2":"getnodejs"];
        Alamofire.request(.GET, "http://localhost:8002/getdemo",parameters:para)
            .responseJSON { response in
                //print(response.request)  // original URL request
                //print(response.response) // URL response
                //print(response.data)     // server data
                //print(response.result)   // result of response serialization
                if let JSON = response.result.value {
                    print("getJSON: \(JSON)")
                }
        }
    }
    
    func testPost(){
        let para=["postpara1": "postxcode","postpara2":"postnodejs"];
        Alamofire.request(.POST, "http://localhost:8002/postdemo",parameters:para)
            .responseJSON { response in
                //print(response.request)  // original URL request
                //print(response.response) // URL response
                //print(response.data)     // server data
                //print(response.result)   // result of response serialization
                if let JSON = response.result.value {
                    print("postJSON: \(JSON)")
                }
        }
    }
  
    //URLSession方法:
    func testUrlSession(){
        let session = NSURLSession.sharedSession()
        let request = NSURLRequest(URL: NSURL(string: "http://localhost:8002/getdemo?para=session")!)
        let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
            let string = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("returnStr:\(string!)")
        })
        task.resume()
    }
}

 

后台使用的是NodeJS,使用Express和body-parser框架

Node后台接收:

 

var express = require('express');
var bodyParser = require('body-parser');

var app = express();
var server = require('http').createServer(app);

app.use(bodyParser.urlencoded({    
  extended: true
}));

var PORT = process.env.PORT || 8002;
server.listen(PORT);
console.log('Server running.');

app.get('/getdemo', function (req, res) { 
	console.log("Get method");
	console.log(req.query); 
	var returnDic = {resultStr: 'get request success'};
  	res.contentType('json');//返回的数据类型
    res.send(JSON.stringify(returnDic));//给客户端返回一个json格式的数据
}); 

app.post('/postdemo', function (req, res) { 
	console.log("Post method");
	console.log(req.body); 
	res.send(req.body); 
}); 

 

demo:https://github.com/rayshen/SwiftUrlSessionDemo


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
第十二篇、Swift_Sqlite的使用发布时间:2022-07-13
下一篇:
使用Pods中使用Swift和Objective-C混编-编译不通过的原因发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap