2012-07-16 76 views
2

嘿家伙我试图找到一种方法来专门从URL中获取查询字符串,我的UIWebView当前已加载。获取UIWebView URL的查询

因此,例如:

www.google.com?page=235

我想用文本 “页= 235” 一NSString结束了。

甚至更​​好的页面在NSData标题密钥和235在ID密钥。

我基本上试图把查询字符串组织成可用的数据。

在我的项目我有一个按钮:

[HTML appendString:@"<a href='didtap://goto?Page=56'>Post Comment</a>"]; 

,我和检查绝对URL,看看是否按钮被解雇了访问。

有没有办法以我想要的方式分析信息?

回答

1

要获取查询字符串,请获取查询 NSURL对象的字符串。

NSURL *url = …; 
NSString *queryString = url.query; 

欲了解更多信息,请参阅访问URL的部分NSURL class文档。

+0

好吧,这只是像100行代码lol保存。 – Necro 2012-08-23 00:08:14

4

我创建演示你想获得这进一步说明了什么..

以下是viewcontroller.h文件代码

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController{ 
    NSURL *Url; 
} 
@property(nonatomic,retain)IBOutlet UIWebView *webVctr; 
@end 

这可以帮助您解决问题 感谢

以下是viewcontroller.m文件代码

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize webVctr = _webVctr; 


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSLog(@"%@",request); 
    Url = [request URL]; 
    // if ([[UrlParts objectAtIndex:(1)] isEqualToString:@"NeverGonnaFindMe"]) { 
    // CONVERT TO STRING AN CLEAN 
    NSString *urlResources = [Url resourceSpecifier]; 
    urlResources = [urlResources stringByReplacingOccurrencesOfString:@"?" withString:@"/"]; 

    // SEPORATE OUT THE URL ON THE/
    NSArray *urlResourcesArray = [urlResources componentsSeparatedByString:@"/"]; 
    // THE LAST OBJECT IN THE ARRAY 
    NSString *urlParamaters = [urlResourcesArray objectAtIndex:([urlResourcesArray count]-1)]; 
    // SEPORATE OUT THE URL ON THE & 
    NSArray *urlParamatersArray = [urlParamaters componentsSeparatedByString:@"&"]; 

    if([urlParamatersArray count] == 1) { 
     NSString *keyValue = [urlParamatersArray objectAtIndex:(0)]; 
     NSArray *keyValueArray = [keyValue componentsSeparatedByString:@"="]; 

     if([[keyValueArray objectAtIndex:(0)] isEqualToString:@"page"]) { 
      NSLog(@"%@",[keyValueArray objectAtIndex:1]); 
     } 

     [self dismissModalViewControllerAnimated:YES]; 
     return NO; 
    } 
    return YES; 
} 
// ACTIVITY INDICATOR 
- (void)webViewDidStartLoad:(UIWebView *)webView{ 
/// [_activityIndicator startAnimating]; 
    NSLog(@"Resting to server"); 
} 
- (void)webViewDidFinishLoad:(UIWebView *)webView{ 
// [_activityIndicator stopAnimating]; 
    NSLog(@"Finish request server"); 
} 
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ 
    NSLog(@"Error"); 
} 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *fullAuthUrlString =[[NSString alloc] initWithFormat:@"www.google.com?page=235"]; 
    NSURL *authUrl = [NSURL URLWithString:fullAuthUrlString]; 
    NSURLRequest *myRequest = [[NSURLRequest alloc] initWithURL:authUrl]; 
    [self.webVctr loadRequest:myRequest]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

@end 
+0

你是个很聪明的人,谢谢。 – Necro 2012-07-16 07:06:18