问题
I've got a problem working with one remote server. My app makes a request to a server using [NSData initWithContentsOfURL:]
method and as a response I get website's url which I open in UIWebView
.
The problem is that those requests have different User-Agent and server can't serve me correct because it expects that I send all requests with the same User-Agent. I know how to change User-Agent (e.g Change User Agent in UIWebView (iPhone SDK)) but what I really want it is somehow to get UIWebView
's User-Agent and set it to [NSData initWithContentsOfURL:] to avoid problems with server side
回答1:
I just ran into a similar issue and needed to make the user agent sent by an NSURLConnection match the one sent by a UIWebView. My solution was to create a UIWebView and then just use javascript to pull out the user agent.
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
回答2:
As @nate mentioned above, you can invoke Javascript in a webview:
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
But invoking new Javascript is a bit hacky and creating a zero-size webView is gratuitous, since you already have a webView you're dealing with.
Alternatively you can simply use native methods on your given webView
:
NSString* ua = [webView.request valueForHTTPHeaderField:@"User-Agent"];
NSLog(@"User-Agent = %@", ua);
来源:https://stackoverflow.com/questions/3297733/how-to-get-uiwebview-user-agent