前言:移动互联网时代,网络通信已经是手机端必不可少的功能。应用中也必不可少地使用了网络通信,增强客户端与服务器交互。使用NSURLConnection实现HTTP的通信。NSURLConnection 提供了异步请求和同步请求两种通信方式。同步请求数据会造成主线程阻塞,通常在请求大数据或网络不通畅时不建议使用。

不管同步请求还是异步请求,建立通信的步骤是一样的:

1 创建NSURL

2 创建NSURLRequest

3 创建NSURLConnection

当NSURLConnection 创建成功后,就会创建一个HTTP连接。异步请求和同步请求的区别是:创建了异步请求,用户可以做其他的操作,请求会再另一个线程执行,通信结果及过程会在回调函数中执行。同步请求则不同,需要请求结束用户才能做其他的操作。

import UIKit

class ViewController: UIViewController,NSURLConnectionDataDelegate {

    var jsonData = NSMutableData()

    override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib. //SynchronousRequest()
//AsynchronousRequest()
} //同步请求
func SynchronousRequest() -> Void {
//创建需要求的NSURL
var url : NSURL! = NSURL(string: "http://m.weather.com.cn/mweather/101010100.html")
//创建请求对象
var request = NSURLRequest(URL: url)
//定义响应对象
var response : NSURLResponse?
//定义错误对象
var error : NSError?
//发出请求
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) if (error != nil) {
//处理错误
println(error?.code)
println(error?.description)
} else {
var josnstring = NSString(data: data!, encoding: NSUTF8StringEncoding)
//转为字符串
println(josnstring)
} } //异步请求
func AsynchronousRequest() -> Void {
//创建需要求的NSURL
var url : NSURL! = NSURL(string: "http://m.weather.com.cn/mweather/101010100.html")
//创建请求对象
var request = NSURLRequest(URL: url)
//创建连接
var connection = NSURLConnection(request: request, delegate: self)
//暂时理解不透彻,待深入了解
connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
//开始
connection?.start()
} //将要发送请求
func connection(connection: NSURLConnection, willSendRequest request: NSURLRequest, redirectResponse response: NSURLResponse?) -> NSURLRequest? {
return request
} //接收响应
func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) { } //收到数据
func connection(connection: NSURLConnection, didReceiveData data: NSData) {
self.jsonData.appendData(data)
} //需要新的内容流
func connection(connection: NSURLConnection, needNewBodyStream request: NSURLRequest) -> NSInputStream? {
return request.HTTPBodyStream
} //发送数据请求
func connection(connection: NSURLConnection, didSendBodyData bytesWritten: Int, totalBytesWritten: Int, totalBytesExpectedToWrite: Int) { } //缓存响应
func connection(connection: NSURLConnection, willCacheResponse cachedResponse: NSCachedURLResponse) -> NSCachedURLResponse? {
return cachedResponse
} //请求结束
func connectionDidFinishLoading(connection: NSURLConnection) {
//请求的结果
var jsonstring = NSString(data: self.jsonData, encoding: NSUTF8StringEncoding) //转为字符串 //println(jsonstring) //解析json
let dict : AnyObject? = NSJSONSerialization.JSONObjectWithData(self.jsonData, options: NSJSONReadingOptions.AllowFragments, error: nil) var dic = dict as! NSDictionary let weatherinfo = dic.objectForKey("weatherinfo") as! NSDictionary
let city = weatherinfo.objectForKey("city") as! String
let date_y = weatherinfo.objectForKey("date_y") as! String
let temp1 = weatherinfo.objectForKey("temp1") as! String } override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated. } }

IOS SWIFT 网络请求JSON解析 基础一的更多相关文章

  1. Win(Phone)10开发第(3)弹,简单的Demo程序网络请求json解析列表显示

    先分享一个由Json字符串直接生成解析对应的类的工具: jsonclassgenerator14 百度天气接口 下面是由一个小功能(又特么的是天气)的实现,记录下下UAP的流程和结构(其实跟之前一模一 ...

  2. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  3. ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

    当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...

  4. Swift 网络请求数据与解析

    一: Swift 网络数据请求与处理最常用第三方 又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累.博客一篇写出来,好多就直接照抄,就没有实质性的把问 ...

  5. iOS开发网络篇-JSON文件的解析

    一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用 ...

  6. [iOS 多线程 & 网络 - 2.1] - 解析json

    A.iOS中json的基本使用 1.解析json数据 (1)json反序列化 对象{}格式 {key : value, key : value,...} 的键值对的结构可以反序列化为OC中的NSDic ...

  7. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  8. iOS - Alamofire 网络请求

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

  9. iOS开发网络篇—JSON介绍

    一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {" ...

随机推荐

  1. Linux 内核的编译系统

    Linux  的编译使用 GNU make 工具来检查整个系统的文件和调用 gcc 工具以及脚本完毕编译源码生成 image 等操作.要了解整个编译系统,我们首先要了解 Linux 内核的 Makef ...

  2. swiper,animate使用方法

    1.先链接css和js文件 <link rel="stylesheet" type="text/css" href="css/swiper-3. ...

  3. Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器

    Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...

  4. [译]Stairway to Integration Services Level 16 – Flexible Source Locations (多文件导入)

    介绍 在本文中我们将利用SSIS参数,变量 以及 Foreach Loop Container 从多个源动态导入数据. 开始前我们先下载一些数据.WeatherData_Dec08_Apr09.zip ...

  5. 基于maven插件的缓存控制插件

    asset-cache-control github源码及下载地址: https://github.com/StruggleBird/asset-cache-control 基于maven插件的缓存控 ...

  6. js 特效 手风琴效果

    $(document).ready(function(){ //定义展开的块 var lastBlock = $('#a1'); //展开的块的宽度 var maxWidth = 406; //折叠的 ...

  7. JavaSE学习总结第20天_IO流2

      20.01  递归概述和注意事项 递归:方法定义中调用方法本身的现象 递归注意事项: 1.要有出口,否则就是死递归 2.次数不能太多,否则就内存溢出 3.构造方法不能递归使用 20.02  递归求 ...

  8. 控制台console使用MFC库函数,Cout输出CString的方法

    新建工程的时候选择:Win32 Console Application 在向导的地方勾选MFC头文件支持,确认即可 等待初始化文件完成后,VS2010会自动打开 项目名.cpp的文件 其中int _t ...

  9. openstack、kvm CentOS升级内核

    openstack平台需要使用各种Linux发行版镜像,其制作方法主要有两种,要么是基于各大Linux发行版ISO光盘手动制作,要么是使用官方提供的制作好镜像进行修改 问题 FATAL: Module ...

  10. poj 3624 Charm Bracelet(区间dp)

    题目链接:http://poj.org/problem?id=3624 思路分析: 经典的0-1背包问题: 分析如下: 代码如下: #include <iostream> using na ...