iOS UIWebView 或 WKWebView URL 重定向



我有一个URL:http://listen.streamonomy.com/cooljazzflorida(例如(。这是我在 PLS 文件(由 SHOUTcast 无线电提供(中解析的用于流式传输音频的 URL。当我从浏览器(Safari 或谷歌浏览器(打开它时,此 URL 被重定向到 http://streaming.shoutcast.com/cooljazzflorida?lang=fr-fr 我可以播放流。

但是,在我的iOS应用程序中,使用UIWebView或WKWebView,重定向的URL是 http://streaming.shoutcast.com/cooljazzflorida_64?lang=fr-fr(然后使用_64(,与浏览器不同,并且我有错误"找不到您需要的文件"。

请问有什么想法吗?谢谢。

编辑:说明问题的示例代码:

https://github.com/iDevelopper/RedirectURLSample.git

#import "ViewController.h"
@interface ViewController () <UIWebViewDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
    webView.delegate = self;
    [self.view addSubview:webView];
    NSString *urlString = @"http://listen.streamonomy.com/cooljazzflorida";
    /* If you enter this url using Safari browser, the redirected url is:
     http://streaming.shoutcast.com/cooljazzflorida?lang=fr-fr
     */
    NSURL *urlToPlay = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:urlToPlay];
    [webView loadRequest:request];
}
#pragma mark - UIWebView Delegate
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSURL *url = [webView.request mainDocumentURL];
    NSLog(@"DID FINISH The Redirected URL is: %@", url);
    /*
     The redirected url is: (not the same returned by the browser and this url is not found)
     http://streaming.shoutcast.com/cooljazzflorida_64?lang=en-us
    */

    // Set AVPlayerItem with the redirected URL
    // ...
}
@end

_64地址确实不存在,Streamonomy 还没有注意到它并修复他们的重定向逻辑是 Streamonomy 的错。不同的重定向目标基于请求中的User-Agent标头。我怀疑 Streamonomy 正在尝试猜测请求设备并查询不同的比特率。我给你找了两个例子:

Mozilla/5.0 (iPad; CPU OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0 Mobile/14C89 Safari/602.1

重定向到现有网址

Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1

重定向至不存在的_64

去弄清楚确切的阈值是多少:-(同样值得注意的是,设置一个完全虚假的 UA 喜欢ignoremeidontneedyourhelp重定向到"正确"(现有(的 URL。但是,如果您打算使用该UI/WKWebView进行正常的公共Web浏览,则这不是一个有用的策略。网站可能会奇怪地呈现或以其他方式损坏。

最新更新