这篇博客主要实现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

Swift&Node 使用Alamofire进行Post的更多相关文章

  1. Swift 开发中Alamofire的使用

    Swift 开发中Alamofire的使用 Alamofire需要解决的6个问题 1.Json解析 2.下载和上传 4.全局401错误 5.网络图片

  2. Swift&NodeJS 使用Alamofire进行Post(zhuan)

    这篇博客主要实现Swift客户端和NodeJS后台的Post.Get请求实现. 我是一个略有点讨厌重复使用工具的人,比如这些基本功能完全可以用OC和PHP等替代,但是没办法,现在知识更新的太快啦,Sw ...

  3. Swift:网络库Alamofire

    一,Alamofire的说明与配置 1,什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetworking 是 iOS 和 OS X 上很受欢迎的第三方H ...

  4. iOS swift HandyJSON组合Alamofire发起网络请求并转换成模型

    在swift开发中,发起网络请求大部分开发者应该都是使用Alamofire发起的网络请求,至于请求完成后JSON解析这一块有很多解决方案,我们今天这里使用HandyJSON来解析请求返回的数据并转化成 ...

  5. Swift网络库Alamofire的导入

    一.手动导入 1, 官网下载 Alamofire 2, 解压下载的文件 放入工程的顶层目录下 3, 打开工程 Add Files 4, 选中项目 TARGETS > General > E ...

  6. Swift安装

    Server1 .Update sudo apt-get update sudo apt-get upgrade . sudo apt-get install bridge-utils .IP 3.1 ...

  7. swift三方库

    链接: Swift 有哪些优秀的第三方库? Swift 中AFNetworking 的替代方案 Alamofire Swift2.0后Alamofire的使用方法 [快速学会Swift第三方库] Al ...

  8. iOS - Alamofire 网络请求

    前言 Alamofire 是 Swift 语言的 HTTP 网络开发工具包,相当于 Swift 实现 AFNetworking 版本.当然,AFNetworking 非常稳定,在 Mac OSX 与 ...

  9. openstack(liberty):部署实验平台(三,简单版本软件安装 之cinder,swift)

    今天这里追加存储相关的部署,主要是Block和Object,为了看到效果,简单的部署在单节点上,即Block一个节点,Object对应一个节点. 读者可能会觉得我这个图和之前的两个post有点点不同, ...

随机推荐

  1. 如何在 apache 中开启 gzip 压缩服务

    服务器设置 gzip 压缩是 web 开发里很普遍的做法.假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文 ...

  2. .Net 程序集按需加载机制

    在开始本文之前先提两个疑问: 1.一个.Net程序依赖很多的dll,那个他们是在应用程序启动的时候全部把所依赖的动态库全部都加载到应用程序域中的呢还是有选择的加载呢? 2.当应用程序已经启动后我们动态 ...

  3. 代码重构之 —— 一堆if、esle 逻辑的处理

    这几天,接手一个同事的代码,关于微信接口开发的,那一堆的 if,看得哥蛋痛了,这个毛病也是很多新手容易犯的,所以特地把这次重构写出来. 下面来我们看看这个代码的问题所在,if else 里面的代码块逻 ...

  4. nios II--实验2——led软件部分

    软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...

  5. C#实现清理系统内存

    金山内存整理工具.360内存清理工具非常好用,可以将系统内存最小化,提升系统运行速度.其实这些事情C#也可以做到,原理就是对系统进程中的进程内存进行逐个优化. 网上大多推荐使用系统的SetProces ...

  6. optiontransferselect例子

    Struts2 OptionTransferSelect标签 动态赋值: 1.html片面: <td class="td2"> <s:optiontransfer ...

  7. android 圆角图片的实现

    图片展示的时候总觉的直角的图片不好看?好办法来了!-- public class ToRoundCorner extends Activity{ public Bitmap toRoundCorner ...

  8. Python基础-字符串格式化_百分号方式_format方式

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  9. Nginx配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户user www-data;    #启动进程,通常设置成和cpu的数量相等worker_process ...

  10. 【BZOJ 1023】【SHOI 2008】cactus仙人掌图

    良心的题解↓ http://z55250825.blog.163.com/blog/static/150230809201412793151890/ tarjan的时候如果是树边则做树形DP(遇到环就 ...