詳解iOS通過ASIHTTPRequest提交JSON數(shù)據(jù)
先驗知識——什么是ASIHTTPRequest?
使用iOS SDK中的HTTP網(wǎng)絡(luò)請求API,相當?shù)膹?fù)雜,調(diào)用很繁瑣,ASIHTTPRequest就是一個對CFNetwork API進行了封裝,并且使用起來非常簡單的一套API,用Objective-C編寫,可以很好的應(yīng)用在Mac OS X系統(tǒng)和iOS平臺的應(yīng)用程序中。ASIHTTPRequest適用于基本的HTTP請求,和基于REST的服務(wù)之間的交互。
上傳JSON格式數(shù)據(jù)
首先給出主功能代碼段,然后對代碼進行詳細解析:
NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil]; if ([NSJSONSerialization isValidJSONObject:user]) { NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error]; NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData]; //NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]); NSURL *url = [NSURL URLWithString:@"http://42.96.140.61/lev_version.php"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"]; [request addRequestHeader:@"Accept" value:@"application/json"]; [request setRequestMethod:@"POST"]; [request setPostBody:tempJsonData]; [request startSynchronous]; NSError *error1 = [request error]; if (!error1) { NSString *response = [request responseString]; NSLog(@"Test:%@",response); } }
代碼段第一行:
NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil];
構(gòu)造了一個最簡單的字典類型的數(shù)據(jù),因為自iOS 5后提供把NSDictionary轉(zhuǎn)換成JSON格式的API。
第二行if判斷該字典數(shù)據(jù)是否可以被JSON化。
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error];
這一句就是把NSDictionary轉(zhuǎn)換成JSON格式的方法,JSON格式的數(shù)據(jù)存儲在NSData類型的變量中。
NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
這一句是把NSData轉(zhuǎn)換成NSMutableData,原因是下面我們要利用ASIHTTPRequest發(fā)送JSON數(shù)據(jù)時,其消息體一定要以NSMutableData的格式存儲。
下面一句注視掉的語句
//NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]);
主要作用是記錄剛才JSON格式化的數(shù)據(jù)
下面到了ASIHTTPRequest功能部分:
NSURL *url = [NSURL URLWithString:@"http://xxxx"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
這兩句的主要功能是設(shè)置要與客戶端交互的服務(wù)器端地址。
接下來兩句:
[request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"]; [request addRequestHeader:@"Accept" value:@"application/json"];
是設(shè)置HTTP請求信息的頭部信息,從中可以看到內(nèi)容類型是JSON。
接下來是設(shè)置請求方式(默認為GET)和消息體:
[request setRequestMethod:@"POST"]; [request setPostBody:tempJsonData];
一切設(shè)置完畢后開啟同步請求:
[request startSynchronous];
最后的一段:
if (!error1) { NSString *response = [request responseString]; NSLog(@"Rev:%@",response); }
是打印服務(wù)器返回的響應(yīng)信息。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法
這篇文章主要介紹了iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法,AVAudioPlayer僅能播放本地文件而不能添加網(wǎng)絡(luò)源,實例代碼為Objective-C,需要的朋友可以參考下2016-03-03iOS開發(fā)中的ViewController轉(zhuǎn)場切換效果實現(xiàn)簡介
這篇文章主要介紹了iOS開發(fā)中的ViewController轉(zhuǎn)場切換效果實,主要針對iOS7以后新加入的API進行講解,需要的朋友可以參考下2015-09-09iOS利用NSMutableAttributedString實現(xiàn)富文本的方法小結(jié)
這篇文章主要給大家介紹了關(guān)于iOS利用NSMutableAttributedString如何實現(xiàn)富文本的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05IOS 下獲取 rootviewcontroller 的版本不同的問題解決辦法
這篇文章主要介紹了IOS 下獲取 rootviewcontroller 的版本不同的問題解決辦法的相關(guān)資料,希望通過本文能幫助到大家,讓大家遇到這種問題可以解決,需要的朋友可以參考下2017-10-10