Post同步異步

//以下使用post
網址與數據分隔開
#define kNewsListURL @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"
#define kNewsListParam @
"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213"

//代理方法所需要的協議
@interfacePostViewController ()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
//聲明一個鏈接屬性  方便在dealloc中使用
@property (nonatomic ,retain)NSURLConnection *connection;
//聲明一個可變data 用於存放數據
@property (nonatomic ,retain)NSMutableData *receiveData;

- (void)dealloc
{
    [
_connectioncancel];
    [
_connectionrelease];
    [
_receiveDatarelease];
    [
superdealloc];
}
-----------------------------------------------------------------------
//Post同步
// 1.創建網址對象(沒中文就不必轉編碼)
   
NSURL *url = [NSURL URLWithString:kNewsListURL];
   
   
// 2.利用網址對象 創建請求
   
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:10];
   
   
//設置標識
    [request
setHTTPMethod:@"Post"];
   
   
//把字符串轉化成data使用UTF-8的編碼格式(攜帶的請求體)
   
NSData *data = [kNewsListParam dataUsingEncoding:NSUTF8StringEncoding];
   
   
//注意區別: post請求可以攜帶一個請求體
    [request
setHTTPBody:data];
   
   
//創建同步鏈接
   
NSData *newData = [NSURLConnection sendSynchronousRequest:request
returningResponse
:nil error:nil];
   
   
//解析數據
   
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:newData options:(NSJSONReadingMutableContainers) error:nil];
    NSLog(@"%@",dataDic);
-----------------------------------------------------------------------
Post異步請求
 //獲取網址對象
   
NSURL *url = [NSURL URLWithString:kNewsListURL];
   
//利用網址對象創建一個請求
   
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:10];
   
//創建標識
   
//注意:post請求需要添加標識符
    [request
setHTTPMethod:@"post"];
   
   
//給這個請求添加請求體
   
NSData *data = [kNewsListParam dataUsingEncoding:NSUTF8StringEncoding];
    [request
setHTTPBody:data];
   
//利用請求創建一個鏈接 (異步代理方法)
-----------------------------------------------------------------------
#pragma mark -- block方法
    [NSURLConnection sendAsynchronousRequest:requestqueue:[NSOperationQueue mainQueue]completionHandler:^(NSURLResponse * _Nullable response,NSData *_Nullable data,NSError *_Nullable connectionError) {
       
    }];   

-----------------------------------------------------------------------
   self.connection = [NSURLConnection connectionWithRequest:requestdelegate:self];
    [self.connectionstart];




-----------------------------------------------------------------------
#pragma mark --代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
   
//鏈接成功時創建data
   
self.receiveData = [NSMutableData data];
}

- (
void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
   
//拼接data
    [
self.receiveData appendData:data];
}


- (
void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   
//解析數據
   
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:self.receiveData options:(NSJSONReadingMutableContainers) error:nil];
   
NSLog(@"%@",dataDic);

}

- (
void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
   
}

UI第十六天 16-NSURLRequest

發佈了32 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章