Skramの答えは正しいですが、ASIHTTPRequestとは何かを考えているかもしれません。
ここでフレームワークを入手できます:
ASIHTTPrequest home
これはそれを使用する方法についての短い美しいチュートリアルです:
素晴らしいチュートリアル
そして、これは私がしばらく前にログインを行うために使用したいくつかのコードです:
-(IBAction)doLogin{
//make sure you have text in the username field, this is optional
if(![[username text] isEqualToString:@""]){
//URL of your web service
NSURL *url = [NSURL URLWithString:@"http://localhost:8888/myservice.php"];
//instantiate request object with URL
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
//Set post values before you send it off (forcing password to lowercase)
[request setPostValue:[[self.password text] lowercaseString] forKey:@"password"];
[request setPostValue:[username text] forKey:@"email"];
//this is optional, I have switch controlling what methods are called in the web service
[request setPostValue:@"2" forKey:@"method"];
//set the delegate to self for ASIHTTPRequest delegates (things you'll see in the tutorial)
[request setDelegate:self];
//send out request
[request startSynchronous];
//Now this code handles what happens after the web service call, notice I use a dictionary called user info to hold the response and I check the string to verify pass or fail and act accordingly.
NSString *verify = [NSString stringWithFormat:@"%@",[userinfo objectForKey:@"verify"]];
if([verify isEqualToString:@"pass"]){
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
UITabBarController *mainMenu =
[storyboard instantiateViewControllerWithIdentifier:@"mainMenu"];
[self.navigationController pushViewController:mainMenu animated:YES];
}
else{
//show login failed Dialog or something...
}
}}
ここにもう少しコードがあります。これは、サーバーが応答を返したときに発生することです。
- (void)requestFinished:(ASIHTTPRequest *)request{
if (request.responseStatusCode == 400) {
NSLog(@"Something is wrong");
} else if (request.responseStatusCode == 403) {
NSLog(@"Something is wrong");
} else if (request.responseStatusCode == 200) {
//the response code is good so proceed.
NSString *responseString = [request responseString];
userinfo = [responseString JSONValue];
NSLog(@"%@", [userinfo objectForKey:@"id"]);
NSLog(@"%@", [userinfo objectForKey:@"user"]);
NSLog(@"%@", [userinfo objectForKey:@"verify"]);
} else {
//print mystery code.
NSLog(@"%d",request.responseStatusCode);
}
}
基本的に、request startSynchronous
それを使用してリクエストを開始すると、サーバー側のコードが実行され、応答文字列(または失敗)が返されます。ASIHttpRequestから実装する必要のあるデリゲートメソッドで応答文字列(または失敗)をキャッチして処理します-(void)requestFinished:(ASIHTTPRequest *)request
。サンプルコードでは、応答文字列をJSONに解析し、後で使用するために辞書に入れています。
チュートリアルを実行すると、これはすべて非常に迅速に理解できます。お役に立てば幸いです。