IOS 网络编程 代码
// ViewController.m
// 16_网络编程
// Created by lanou3g on 14-12-19.
// Copyright (c) 2014年 mxt. All rights reserved.
#import "ViewController.h"
#define BASE_URL @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"
#define BASE_POST_URL @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?"
#define POST @"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"
@interface ViewController ()<NSURLConnectionDataDelegate>
@property(nonatomic,retain)NSMutableData *mutaData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
/*
不同点:
1、给服务器传输数据的⽅方式:
GET :通过网址字符串。
POST:通过data
2、传输数据的大小:
GET :网址字符串最多255字节。
POST:使⽤用NSData,容量超过1G
3、安全性:
GET:所有传输给服务器的数据,显示在网址⾥里,类似于密码的明⽂输入,直接可见。
POST:数据被转成NSData(二进制数据),类似于密码的密⽂输入,无法直接读取
*/
//GET 同步
- (IBAction)getSyncButton:(id)sender {
//1, 创建URL
NSURL *url = [NSURL URLWithString:BASE_URL];
//2, 创建NSURLRequest 请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//2, 1
[request setHTTPMethod:@"GET"];
//3,返回结果对象:返回值信息
NSURLResponse *response = nil;
NSError *error = nil;
//4,创建链接对象 NSURLConnection
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
// NSLog(@"返回类型 %@ ",response);//打印返回值信息
// NSLog(@"--------------------%@",data);
//6 解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
//NSLog(@"+++++++++%@",dic);
// NSLog(@"%@",[dic valueForKey:@"news"]);
}
//post 同步
- (IBAction)postSyncButton:(id)sender {
//1,创建URL
NSURL *url = [NSURL URLWithString:BASE_POST_URL];
//1,1 设置请求体中的参数,进行编码
NSString *post = [NSString stringWithFormat:POST];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
//2,创建NSURLRequest 请求对象(可变 是因为要设置参数)
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//2,1
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
NSError *error = nil;
//3,创建链接对象 NSURLConnection (同步 不设置代理)
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
// NSLog(@"--------------------%@",data);
//6 解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"+++++++++%@",dic);
// NSLog(@"%@",[dic valueForKey:@"news"]);
}
/*
异步联接有两种实现⽅方式:
1, 设置代理,接收数据
2, 实现block(多线程)
*/
//GET异步
- (IBAction)getAsyncButton:(id)sender {
// GET异步 + block
//1, 创建URL
NSURL *url = [NSURL URLWithString:BASE_URL];
//2, 创建NSURLRequest 请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//2,1
[request setHTTPMethod:@"GET"];
//创建操作队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//3,创建链接对象 NSURLConnection (在block 内部完成解析)
__block ViewController *weakSelf = self;
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//3,1 解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
//NSLog(@"+++++++++%@",dic);
//永远不要在子线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
//回到主线程 更新UI
weakSelf.textView.text = [NSString stringWithFormat:@"%@",dic];
});
}];
NSLog(@">>>>>>>>>>>>>>><<<>>%lu",_textView.retainCount);
[queue release];
/*
//1, 创建URL
NSURL *url = [NSURL URLWithString:BASE_URL];
//2, 创建NSURLRequest 请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//2,1
[request setHTTPMethod:@"GET"];
//3, 创建链接对象 发送请求 设置代理
[NSURLConnection connectionWithRequest:request delegate:self];
*/
}
#pragma mark -NSURLConnectionDataDelegate
//开始接受
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)respons
{
NSLog(@"开始接受");
self.mutaData = [NSMutableData data];
NSLog(@"%lu",_mutaData.retainCount);
}
//接受数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"---------接受数据");
[self.mutaData appendData:data];
}
//接受完毕
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"++接受完毕");
//解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:_mutaData options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",dic);
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"错误");
}
//POST 异步
- (IBAction)postAsyncButton:(id)sender {
//1,创建URL
NSURL *url = [NSURL URLWithString:BASE_POST_URL];
//1,1 设置请求体中的参数,进行编码
NSString *post = [NSString stringWithFormat:POST];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
//2,创建NSURLRequest 请求对象(可变 是因为要设置参数)
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//2,1
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
//创建操作队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//3,创建链接对象 NSURLConnection (在block 内部完成解析)
__block ViewController *weakSelf = self;
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//3,1 解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
//NSLog(@"+++++++++%@",dic);
//永远不要在子线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
//回到主线程 更新UI
weakSelf.textView.text = [NSString stringWithFormat:@"%@",dic];
});
}];
NSLog(@">>>>>>>>>>>>>>><<<>>%lu",_textView.retainCount);
[queue release];
}
- (void)dealloc
{
[_mutaData release];
[_textView release];
[super dealloc];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
IOS 网络编程 代码的更多相关文章
- iOS网络编程模型
iOS网络编程层次结构也分为三层: Cocoa层:NSURL,Bonjour,Game Kit,WebKit Core Foundation层:基于 C 的 CFNetwork 和 CFNetServ ...
- IOS网络编程——第三方类库
IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他
- IOS网络编程:HTTP
IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...
- iOS网络编程笔记——Socket编程
一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...
- iOS 网络编程模式总结
IOS 可以采用三类api 接口进行网络编程,根据抽象层次从低到高分别为socket方式.stream方式.url 方式. 一 .socket 方式 IOS 提供的socket 方式的网络编程接口为C ...
- ios网络编程(入门级别)-- 基础知识
在学习ios的过程中,停留在UI控件很长时间,现在正在逐步的接触当中!!!!!!在这个过程中,小编学到了一些关于网络编程知识,并且有感而发,在此分享一下: 关于网络请求的重要性我想不用多说了吧!!!对 ...
- 从socket开始讲IOS网络编程
home list tags talk user rss Mac&iOS Socket 大纲 一.Socket简介 二.BSD Socket编程准备 1.地址 2.端口 3.网络字节序 4.半 ...
- iOS项目开发实战——iOS网络编程获取网页Html源码
现在我们身处互联网的时代.不论什么一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比較low,这里我们将会開始使用Swift开发iOS应用,而且主要来 ...
- iOS网络编程
今天的重点是UIWebView.NSURLSession.JSon. 网络编程联网准备:1.在Info.plist中添加AppTransportSecurity类型Dictionary:2.在AppT ...
随机推荐
- Java中join()方法的理解
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. 比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. t.join ...
- 区分width()、css('width')、innerWidth()
#widthTest1 { width: 200px; height: 200px; background-color: #00CCFF; -webkit-box-sizing: border-box ...
- 对MFC 框架的认识
1.MFC 的概念 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Wind ...
- jQuery on()绑定动态元素出现的问题小结
jQuery on()方法是官方推荐的绑定事件的一个方法.使用 on() 方法可以给将来动态创建的动态元素绑定指定的事件,通过本文给大家介绍jQuery on()绑定动态元素出现的问题小结,需要的朋友 ...
- csv操作帮助类
功能描述: 集合转换为csv数据 DataSe转换为csv数据 using System; using System.Collections.Generic; using System.Data; u ...
- 大数据笔记02:大数据之Hadoop的生态系统和版本
1.Hadoop的生态系统: (1)图1: (2)图2: 图1 和 图2 都是形象说明了Hadoop的生态圈. 2.举例介绍Hadoop生态圈的小工具: (1)Hive工具(中文意思:小蜜蜂) 利用H ...
- nginx 2.基本配置
死磕nginx 2.基本配置 鉴于深入浅出的原理,我们先从一个简单的配置了解nginx的配置 1.一个典型配置 nginx的配置文件默认在nginx安装目录的conf二级目录下面,主配置文件为 ngi ...
- ASP.NET-FineUI开发实践-4
最近实在没时间研究东西,FineUI一直也没进一步实践,但是还是很想学点东西,所以找了个课题研究了下,在论坛里看见了又下角的提醒,自己想了想做了一个,我不是大神,接触EXTJS很少,就是用到哪看哪,没 ...
- 秒味课堂Angular js笔记------过滤器
不同过滤器的小demo. currency number uppercase json limitTo date orderBy filter <script> var filterMy ...
- spring源码分析
编译问题 spring-4.0.5.release编译是用jdk8编译的,为啥可以运行在jdk7的环境? 源码分析 spring源码分析,由一个点各个击破,比如依赖注入,autowired. spri ...