1> Get請求直接從服務器拿數據
性能好
效率高
在地址欄會顯示所有的參數,從直觀上安全性不高
由於Get不提交數據給服務器,因此實際的安全性高
實際應用:數據查詢
–POST的語意是對指定資源“追加/添加”數據 –將數據放在數據體中,按照變量和值相對應的方式,傳遞到action所指向URL –所有數據對用戶來說不可見 –可以傳輸大量數據,上傳文件只能使用Post
2> Post請求,需要先弄一個數據體,將數據體提交給服務器,才能獲取到服務器的響應
性能不好
效率低
不會在地址欄顯示參數,直觀上安全性高
由於Post請求會提交數據給服務器,有可能會存在安全漏洞,實際的安全性不高
實際應用:用戶登錄、上傳文件等需要與服務器進行數據交互的操作,才需要使用到Post操作
下面是我post和get方法的關鍵代碼
主要是一個用戶名和密碼的登錄界面
界面的代碼我就省略了,我只提供關鍵代碼,如果有什麼疑問,可以聯系本人,共同探討:email:[email protected]
1
#pragma
mark Get方法登錄
(IBAction)getLogin
{
NSString *userName = userName.text;
NSString *password = password.text;
// 1. 網絡地址URL
NSString *urlString = [NSString stringWithFormat:@“http://192.168.3.251/~apple/itcast/login.php?username=%@&password=%@“, userName, password];
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
// 2. 請求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 3. 連接
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
// 4. 啟動連接
[connection start];
// 5. 實例化接收數據
_serverData = [NSMutableData data];
}
pragma mark POST登錄
(IBAction)postLogin
{
NSString *userName = userName.text;
NSString *password = password.text;
// 1. 網絡地址URL
NSString *urlString = [NSString stringWithFormat:@“http://192.168.3.251/~apple/itcast/login.php”];
NSURL *url = [NSURL URLWithString:urlString];
// 2. 請求,生成數據體添加到請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
// 1) 指定網絡請求的方法
// 默認是GET,POST請求通常用在用戶登錄,上傳文件
request.HTTPMethod = @“POST”;
// 2) 生成數據體
NSString *bodyStr = [NSString stringWithFormat:@“username=%@&password=%@“, userName, password];
// 轉換成NSData
request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
// 3. 連接
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
// 4. 啟動連接
[connection start];
// 5. 實例化接收數據
_serverData = [NSMutableData data];
}
(void)connectionDidFinishLoading:(NSURLConnection )connection
{
// 轉換成字符串
NSString result = [[NSString alloc] initWithData:_serverData encoding:NSUTF8StringEncoding];
NSLog(@“%@“, result);
[self showMessageWithResult:result];
// 釋放數據
_serverData = nil;
}
(void)showMessageWithResult:(NSString *)result
{
// 判斷“用戶名”所在位置
NSRange range = [result rangeOfString:@“用戶名”];
NSLog(@“%@“, NSStringFromRange(range));
// range.location > 0 說明用戶登錄正確
NSString *message = nil;
if (range.location > 0) {
1
NSString
*userName = [result substringFromIndex:range.location + range.length];
2
NSLog(@
"%@"
,
userName);
3
4
message
= [NSString stringWithFormat:@
"歡迎歸來:%@"
,
userName];
} else {
1
//
在網絡登錄時,千萬不要告訴用戶什麼錯了!
2
message
= @
"用戶名或者密碼錯誤!"
;
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@“提示” message:message delegate:nil cancelButtonTitle:@“OK” otherButtonTitles:nil, nil];
[alert show];
}