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

Swift&NodeJS 使用Alamofire进行Post(zhuan)的更多相关文章

  1. Swift 开发中Alamofire的使用

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

  2. Swift&Node 使用Alamofire进行Post

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

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

  7. iOS - Alamofire 网络请求

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

  8. 网络库Alamofire使用方法学习笔记

    Github地址 由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目 导入Alamofire 以下为使用cocoapods导入,其余的方式请参考官网 source 'h ...

  9. Swift基础之Demo包含刷新,加载,网络请求,MVC

    Swift中有一个Alamofire第三方是进行网络请求的,它是AFNetworking的作者写的Swift形式,今天先介绍一下,利用pod导入AFNetworking,SVProgressHUD,M ...

随机推荐

  1. js有关时间日期的操作

    var myDate = new Date();var date_string = myDate.getFullYear()+""+((myDate.getMonth()+1)&l ...

  2. 002.ICMP--拼接ICMP包,实现简单Ping程序(原始套接字)

    一.大致流程: 将ICMP头和时间数据设置好后,通过创建好的原始套接字socket发出去.目的主机计算效验和后会将数据原样返回,用当前时间和返回的数据结算时间差,计算出rtt. 二.数据结构: ICM ...

  3. hdu 5057 Argestes and Sequence(分块算法)

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  4. Redhat Linux 修改主机名(HOSTNAME)

    hostname #查看当前主机的主机名hostname NEWHOSTNAME #临时修改当前主机名 修改主机名vi /etc/sysconfig/network #通过配置文件修改主机名NETWO ...

  5. SCCM 客户端的修复

    1. Stopping the SMS Agent Host service (net stop ccmexec) 2. Stopping the WMI service (net stop winm ...

  6. Linux vim(4)

    vim相对于vi做了很多的提升: -VIM支持多集撤销 -VIM可以跨平台运行 —VIM支持语法高亮 -VIM支持图形界面 vim三大模式: command mode vi进入时的默认模式 esc进入 ...

  7. [转]在EntityFramework6中执行SQL语句

    本文转自:http://www.cnblogs.com/wujingtao/p/5412329.html 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有 ...

  8. LeetCode 笔记系列六 Reverse Nodes in k-Group [学习如何逆转一个单链表]

    题目:Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...

  9. POJ2488A Knight's Journey[DFS]

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41936   Accepted: 14 ...

  10. 渗透攻防工具篇-后渗透阶段的Meterpreter

    作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23677530来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 熟悉Metasploit ...