Skip to content

Instantly share code, notes, and snippets.

@Oliviergg
Created April 26, 2012 16:52
Show Gist options
  • Save Oliviergg/2500942 to your computer and use it in GitHub Desktop.
Save Oliviergg/2500942 to your computer and use it in GitHub Desktop.
Intégrer des pages web dans un controller iOs
- (void)requestDidFailed:(ASIHTTPRequest *)request {
// La création de compte a échoué. Afficher un message d'erreur
}
- (void)requestDidSucceed:(ASIHTTPRequest *)request {
NSData* data=[request.responseString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [[CJSONDeserializer deserializer] deserialize:data error:NULL];
// cacher la bulle d'attente
[webView stringByEvaluatingJavaScriptFromString:@"hideWaiting()"];
NSDictionary *lastHTTPBody = request.userInfo;
[[NSUserDefaults standardUserDefaults] setObject:currentUser.pseudo forKey:@"login"];
[[NSUserDefaults standardUserDefaults] setObject:currentUser.password forKey:@"password"];
// La création de compte est Ok : Passer à la suite (autre controller, afficher un résultat)
}
- (BOOL)webView:(UIWebView *)webview
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType{
// Seule la méthode post est interessante dans ce cas
if([[request HTTPMethod] isEqualToString:@"POST"]){
// Affichage de la bulle d'attente
[webView stringByEvaluatingJavaScriptFromString:@"showWaiting()"];
// Conversion de la requete en une ASIHttpRequest
NSDictionary *lastHTTPBody = [[[[NSString alloc] initWithData:[request HTTPBody]
encoding:NSUTF8StringEncoding]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] URLQueryParameters];
NSURL *_url = [request URL];
ASIHTTPRequest *r=[ASIHTTPRequest requestWithURL:_url];
[r appendPostData:[request HTTPBody]];
r.requestMethod = [request HTTPMethod];
r.userInfo = lastHTTPBody;
[r setDelegate:self];
[r setDidFinishSelector:@selector(requestDidSucceed:)];
[r setDidFailSelector:@selector(requestDidFailed:)];
[r setTimeOutSeconds:10];
[r startAsynchronous];
return false;
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment