web-dev-qa-db-ja.com

UIWebViewユーザーエージェントを取得する方法

1台のリモートサーバーでの作業に問題があります。私のアプリは[NSData initWithContentsOfURL:]メソッドを使用してサーバーにリクエストを送信し、応答としてUIWebViewで開いたウェブサイトのURLを取得します。

問題は、これらのリクエストのUser-Agentが異なり、サーバーは同じUser-Agentですべてのリクエストを送信することを想定しているため、正しくサービスを提供できないことです。 User-Agentを変更する方法を知っています(例 IWebView(iPhone SDK)でUser Agentを変更 )が、本当に欲しいのは、どういうわけかUIWebViewのUser-Agentを取得してに設定することです。 [NSData initWithContentsOfURL:]サーバー側の問題を回避する

27
Dmytro

同様の問題が発生し、NSURLConnectionによって送信されたユーザーエージェントをUIWebViewによって送信されたものと一致させる必要がありました。私の解決策は、UIWebViewを作成してから、javascriptを使用してユーザーエージェントを引き出すことでした。

UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
67
nate

@nateが述べたように 上記 、WebビューでJavascriptを呼び出すことができます:

UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

ただし、新しいJavascriptを呼び出すのは少し厄介で、処理しているwebViewが既にあるため、サイズがゼロのwebViewを作成するのは不必要です。

または、指定されたwebViewでネイティブメソッドを使用することもできます。

NSString* ua = [webView.request valueForHTTPHeaderField:@"User-Agent"];
NSLog(@"User-Agent = %@", ua);
6
JohnK