同步和异步请求

//

//  ViewController.m

//  UI-NO-18

//

//  Created by Bruce on 15/8/13.

//  Copyright (c) 2015年 Bruce. All rights reserved.

//

#import "ViewController.h"

#import "InfoModel.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor blackColor];

[self loadData4];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.view.frame];

imageView.contentMode = UIViewContentModeScaleAspectFit;

imageView.image = [UIImage imageNamed:@"7.jpg"];

[self.view addSubview:imageView];

NSLog(@"111111111111111");

}

//通过URL 获得到 URL里面的内容 (字符串)

- (void)loadData1

{

//    把字符串   转成 NSURL

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

NSLog(@"%@",content);

}

//通过URL 获得到 URL里面的data

- (void)loadData2

{

NSURL *url = [NSURL URLWithString:@"http://preview.quanjing.com/is_rm001/is0997q92.jpg"];

NSData *data = [NSData dataWithContentsOfURL:url];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.view.frame];

imageView.contentMode = UIViewContentModeScaleAspectFit;

imageView.image = [UIImage imageWithData:data];

[self.view addSubview:imageView];

}

//网络请求 :同步请求   异步请求

//同步请求:等所有操作 完全执行完毕   才会继续执行

//同步请求 的  弊端   会遇到  假死的情况 (只要请求的操作 没有 执行完毕   就不会再去响应 任何事件(在同一线程))

//异步请求:在程序运行的时候   会利用空闲的时间  去执行里面的操作  不会影响到 同一线程里面的  其他操作

//同步请求

- (void)loadData3

{

NSURL *url = [NSURL URLWithString:@"http://preview.quanjing.com/is_rm001/is0997q92.jpg"];

//    实例化 请求对象  里面 携带 着  请求的地址

NSURLRequest *request = [NSURLRequest requestWithURL:url];

//    data 服务响应(返回)给咱们的数据

//    NSURLConnection 发送请求的类

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.view.frame];

imageView.contentMode = UIViewContentModeScaleAspectFit;

imageView.image = [UIImage imageWithData:data];

[self.view addSubview:imageView];

NSLog(@"22222222222222");

}

//异步请求

- (void)loadData4

{

UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.view.frame];

imageView.contentMode = UIViewContentModeScaleAspectFit;

//    imageView.image = [UIImage imageWithData:data];

[self.view addSubview:imageView];

NSURL *url = [NSURL URLWithString:@"http://preview.quanjing.com/is_rm001/is0997q92.jpg"];

//    实例化 请求对象  里面 携带 着  请求的地址

NSURLRequest *request = [NSURLRequest requestWithURL:url];

//    需要 通过 连接  异步发送 请求

//    线程

NSOperationQueue *queue = [[NSOperationQueue alloc]init];

//   发送一个异步请求 在queue 这个线程里面去执行

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

//        response 服务器 回应的 内容 (回应状态的code 以及error)

//        data 回应给 客户端 需要的数据

NSLog(@"%@",response);

imageView.image = [UIImage imageWithData:data];

NSLog(@"22222222222222");

}];

}

//get 把传输的数据 放在链接地址里面

- (void)loadData5

{

NSString *interfaceString = @"http://apis.baidu.com/showapi_open_bus/mobile/find";

NSString *requestContentString = @"num=13370116152";

NSString *urlString = [NSString stringWithFormat:@"%@?%@",interfaceString,requestContentString];

//    把连接地址字符串 转成NSUTF8StringEncoding

NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

//    可变请求 可以添加 请求方式  以及请求的 请求头 或者更多

//    timeoutInterval 请求所需的时间  超过 时间 不再发送这个请求

//    cachePolicy 缓存内容的方式

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

//    指定htpp的请求方式

request.HTTPMethod = @"GET";

NSString *apiKey = @"e7f5ac9e7c42a6c8cb125ee1d7e8779e";

//    把apiKey 发送给 服务器 指定的请求头 位置

//    forHTTPHeaderField 需要的KEY  是服务指定的key

[request addValue:apiKey forHTTPHeaderField:@"apikey"];

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

NSLog(@"%@",response);

//        解析 json 文件

//        把data 转换成json 文件

NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

InfoModel *modle = [[InfoModel alloc]init];

modle.city = info[@"showapi_res_body"][@"city"];

modle.name = info[@"showapi_res_body"][@"name"];

}];

}

//post

- (void)loadData6

{

NSURL *url = [NSURL URLWithString:@"http://www.weihuok.com/customer2/GetService"];

//    请求的参数

//  PlatformType 设备类型  3表示iOS设备

NSDictionary *dic = @{@"PlatformType":@"3"};

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

//    设置HTTP请求的方式

request.HTTPMethod = @"POST";

//    设置 请求的参数

//    HTTPBody 要的是data

//    dataUsingEncoding 把字符串 转成data

request.HTTPBody = [[NSString stringWithFormat:@"%@",dic] dataUsingEncoding:NSUTF8StringEncoding];

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

NSLog(@"===%@",info);

}];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

时间: 2024-10-23 13:55:19

同步和异步请求的相关文章

[IOS_HTTP]NSURLConnection同步与异步请求

今天看到<WIN32多线程程序设计>的同步控制时,才发现原来自己对同步和异步的概念很模糊,甚至混淆.于是GOOGLE了一下.下面都是高人们的见解,简单明了. 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式.  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式. 举个不太恰当的例子,就像:  SendMessage(...)  TRACE0("just  like  send");   PostMessage(...) 

关于jquery同步和异步请求问题总结

关于jquery同步和异步请求问题总结 问题 这几天做项目的时候,写脚本遇到一个问题,就是jquery异步请求和同步请求执行顺序不按代码顺序执行而是最后执行导致添加数据报错,添加到空值,这怎么忍,于是我去查找jquery api,终于知道了原来jquery默认异步请求,防止数据卡死,终于让我找到了这货 async,当async: true 时,ajax请求是异步的.当async : true 时,就是同步的,但是我又有个问题,怎么设置,这个在哪设置,用$.ajax去写这个操作,不,不太麻烦了,到

jquery 同步和异步请求

1. $.ajax 同步和异步请求 1 $.ajax({ 2 type: "POST", 3 url: "some.php", 4 async : true, // true 异步,false 同步 5 // or data:{name:"John",locationi:"Boston"} 6 data: "name=John&location=Boston", 7 success: functio

【Java&amp;Android开源库代码剖析】のandroid-async-http(如何设计一个优雅的Android网络请求框架,同时支持同步和异步请求)开篇

在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正式开篇来详细介绍这个库的实现,同时结合源码探讨如何设计一个优雅的Android网络请求框架.做过一段时间Android开发的同学应该对这个库不陌生,因为它对Apache的HttpClient API的封装使得开发者可以简洁优雅的实现网络请求和响应,并且同时支持同步和异步请求. 网络请求框架一般至少需要具备如下几个组件:1

C# ASP.NET Core使用HttpClient的同步和异步请求

引用 Newtonsoft.Json // Post请求 public string PostResponse(string url,string postData,out string statusCode) { string result = string.Empty; //设置Http的正文 HttpContent httpContent = new StringContent(postData); //设置Http的内容标头 httpContent.Headers.ContentType

Swift3.0:Get/Post同步和异步请求

一.介绍 Get和Post区别: Get是从服务器上获取数据,Post是向服务器发送数据. 对于Get方式,服务端用Request.QueryString获取变量的值,对于Post方式,服务端用Request.From获取提交的数据. Get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内的各个字段一一对应. Post是通过HTTP Post机制,将表单内各个字段和其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程. Get

ASIHTTP 框架,同步、 异步请求、 上传 、 下载

ASIHTTPRequest详解 ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目.让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP 认证.在新的版本中,还加入了 Objective-C 闭包 Block 的支持,让我们的代码加轻简灵活. 下面就举例说明它的 API 用法. 发起一个同步请求 同步意为着线程阻塞,在主线程中使用此方法会使应用Hang住而不响应任何用户事件.所以,在应用程序设计时,大多被用在

js中同步与异步请求方式

异步请求方式: $.ajax({ url : 'your url', data:{name:value}, cache : false, async : true, type : "POST", dataType : 'json/xml/html', success : function (result){ do something.... } }); 同步请求方式: $.ajax({ url : 'your url', data:{name:value}, cache : false

同步、异步请求

IOS之同步请求.异步请求.GET请求.POST请求 1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行 3.GET请求,将参数直接写在访问路径上.操作简单,不过容易被外界看到,安全性不高,地址最多255字节: 4.POST请求,将参数放到body里面.POST请求操作相对复杂,需要将参数和地址分开,不过安全性高