2

嘿伙计们,我正在尝试找到一种方法来专门从URLUIWebView当前加载的查询字符串中获取查询字符串。

例如:

www.google.com?page=235

我想以NSString文本“page=235”结尾。

或者甚至更好的页面在NSData标题键和 235 在 ID 键。

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

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

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

我通过检查绝对值URL来查看按钮是否被触发。

有什么方法可以按照我想要的方式描述信息吗?

4

2 回答 2

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
于 2012-07-16T06:58:53.473 回答
1

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

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

有关更多信息,请参阅NSURL 类文档中的访问 URL的各个部分。

于 2012-08-17T08:47:26.320 回答