現在、webView shouldStartLoadWithRequest: を使用してログイン用のトークンを提供するハイブリッド アプリを開発しています。私の機能は、私が行うすべての通常のリクエスト(クリックなど)に対して正常に動作します
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request
NSLog([NSString stringWithFormat:@"Loading View: %@",[[request URL] absoluteString]]);
if ([[[request URL] absoluteString] rangeOfString:BASE_URL].location != NSNotFound) {
NSString *token = [[NSUserDefaults standardUserDefaults] stringForKey:kDefaultsKeyLoginToken];
NSString *hash = [[NSUserDefaults standardUserDefaults] stringForKey:kDefaultsKeyLoginHash];
NSString *params = [NSString stringWithFormat:@"mobile=app&user_token=%@&user_hash=%@",token,hash];
if([[request URL] query] == nil) {
[self LoadUrl:[[request URL] absoluteString] withGetParams:params append:NO];
return NO;
}else{
if([[[request URL] absoluteString] rangeOfString:params].location == NSNotFound){
[self LoadUrl:[[request URL] absoluteString] withGetParams:params append:YES];
return NO;
}
}
}
-(void)LoadUrl:(NSString *)url withGetParams:(NSString *)params append:(BOOL)append{
NSString *PreUrl;
if(append == YES) PreUrl = [NSString stringWithFormat:@"%@&%@",url,params];
else PreUrl = [NSString stringWithFormat:@"%@?%@",url,params];
NSURL *nsurl = [NSURL URLWithString: PreUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:nsurl];
[self.WebView loadRequest:request];
}
私がこのコードで抱えている問題は、たとえばイメージをロードすると、「ハッシュ化されて追加される」として検出されることです (これは正しいです。すべてのリクエストに Auth を含める必要があります)。しかし、イメージはウェブビュー自体。
私の最初の試み (このモデルに切り替える前) は、解析されたリクエストを変更することでした。しかし、すべての変更は無視されました....
この問題を解決する方法を知っている人はいますか? リクエストを実際に変更する方法はありますか? または、そうでない場合、少なくともリクエストの「ターゲット」を特定するか、転送できますか?
助けてくれてありがとう