URL编码不受支持。

5

我有一个在线文件。我试图使用直播流媒体播放器来播放它。但是媒体播放器出现了一个错误(-1,1004)。我认为我的媒体播放器没有得到正确的URL,因为它包含阿拉伯字符,所以我尝试使用Html.encode或UrlEncoder类对其进行编码,但仍然出现相同的错误。

最后,我在webview中加载该网址,在页面加载完成后将网页网址传递给媒体播放器。

    WebView webView = new WebView(SongActivity.this);
        webView.setSoundEffectsEnabled(false);
        webView.loadUrl("MY URL");
        webView.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {

                try {

                playerService.startPlay(url );// this passes url to media player and url will be played using media player

                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            };

            public void onPageStarted(WebView view, String url,
                    android.graphics.Bitmap favicon) {
                System.out.println("Decoding url:" + strURl);
            };
        });

它正常工作,我也能播放歌曲,但这不是标准的。 对于没有阿拉伯字符的普通URL,媒体播放器代码运行良好。

你能给我提供一些标准的解决方案吗?

1个回答

1
根据错误代码(-1,1004),似乎您可能会从服务器获得HTTP 403 Forbidden作为答案。在mediaPlayer.setDataSource(String url)之前,您尝试过使用Uri.encode(String).toString()吗?
来自https://dev59.com/S2455IYBdhLWcg3wCfqC#4571518

不要使用URLEncoder类!尽管名称是这样,但该类实际上执行的是HTML表单编码,而不是URL编码。


它正在工作,但我仍然收到错误消息(1,-2147483648)。因此,我交叉验证了我的URL,发现Uri.encode()插入了一些额外的字符。 - Swapnil Deshmukh
我找不到关于错误代码-2147483648的任何参考资料。你在LogCat中看到了什么?也许有一些提示可以说明这个错误的含义。 - Kuitsi
在logcat中只显示MediaPlayer错误(1,-2147483648)。没有其他信息。甚至应用程序也没有崩溃。 - Swapnil Deshmukh
在Stack Overflow上似乎有更多关于那个错误代码的问题。希望这些链接能帮助你找到正确的方向:https://dev59.com/0mTWa4cB1Zd3GeqPCVrO https://dev59.com/M13Va4cB1Zd3GeqPBYlU - Kuitsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接