zoukankan      html  css  js  c++  java
  • Swift&NodeJS 使用Alamofire进行Post(zhuan)

    这篇博客主要实现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); 
    });
    
  • 相关阅读:
    done apple两轮白人教你ci/cd
    done 没看完但是别处不考 沃尔玛sv大数据组的友好小哥
    done hitachi network四轮但是中规中矩
    23. Merge k Sorted Lists 合并k个排序链表
    SpringBoot+Spring常用注解总结
    MyBatisPlus 之 入门HelloWorld
    MyBatisPlus 之 集成MP
    MyBatisPlus 之 MyBatis 简介
    09月24日总结
    09月22日总结
  • 原文地址:https://www.cnblogs.com/mafeng/p/5948435.html
Copyright © 2011-2022 走看看