iOS原生Http請求,get post 非同步
網上有個公開的天氣介面:天氣 ,點進其中的getSupportCityDataset介面,用這個介面為例寫一下iOS上的HTTP請求的寫法。 這裡面提供了get、post請求的格式要求。
1、get:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
NSURL
* URL = [NSURL URLWithString:[URLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSURLRequest
* request = [[NSURLRequest alloc]initWithURL:URL];
NSURLResponse
* response = nil;
NSError
* error = nil;
NSData
* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if
(error) {
NSLog(@ "error:
%@" ,[error
localizedDescription]); } else {
NSLog(@ "response
: %@" ,response);
NSLog(@ "backData
: %@" ,[[NSString
alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}
</span>
|
用字串構建NSURL,最好在使用URLWithString的時候把原字串進行一下UTF8轉碼,關於為何要轉碼,看下這裡第一部分。然後NSURL物件構建NSURLRequest,使用NSURLConnection的同步方法,傳入request物件就可以通過get方法獲取資料。
這裡有個NSError物件地址傳入,用於做錯誤判斷,網路的實際情況是多變的,必須要考慮請求錯誤的情況,否則可能導致程式奔潰。
2、post:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
NSURL
* URL = [NSURL URLWithString:[URLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString
* postString = @ "theRegionCode=廣東" ;
NSData
* postData = [postString dataUsingEncoding:NSUTF8StringEncoding]; //將請求引數字串轉成NSData型別
NSMutableURLRequest
* request = [[NSMutableURLRequest alloc]init];
[request
setHTTPMethod:@ "post" ];
//指定請求方式
[request
setURL:URL]; //設定請求的地址
[request
setHTTPBody:postData];
|