2

こんにちは、URLUIWebViewが現在ロードしているクエリ文字列を具体的に取得する方法を見つけようとしています。

たとえば、次のようになります。

www.google.com?page=235

NSString「page = 235」というテキストで終わりたいと思います。

または、NSDataKey of Title で Page を、Key of ID で 235 を指定することもできます。

基本的に、クエリ文字列を使用可能なデータに整理しようとしています。

私のプロジェクトにはボタンがあります:

[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 に答える