1台のリモートサーバーでの作業に問題があります。私のアプリは[NSData initWithContentsOfURL:]
メソッドを使用してサーバーにリクエストを送信し、応答としてUIWebView
で開いたウェブサイトのURLを取得します。
問題は、これらのリクエストのUser-Agentが異なり、サーバーは同じUser-Agentですべてのリクエストを送信することを想定しているため、正しくサービスを提供できないことです。 User-Agentを変更する方法を知っています(例 IWebView(iPhone SDK)でUser Agentを変更 )が、本当に欲しいのは、どういうわけかUIWebView
のUser-Agentを取得してに設定することです。 [NSData initWithContentsOfURL:]サーバー側の問題を回避する
同様の問題が発生し、NSURLConnectionによって送信されたユーザーエージェントをUIWebViewによって送信されたものと一致させる必要がありました。私の解決策は、UIWebViewを作成してから、javascriptを使用してユーザーエージェントを引き出すことでした。
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
@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);