我正在尝试使用Ruby on Rails应用程序中的JPlayer来传输SoundCloud歌曲。我尝试使用这个获取流URL服务器端:
@stream_url = client.get(@track.stream_url, :allow_redirects => true)
然后我尝试使用JPlayer加载此URL,如下所示:
<script type="text/javascript">
$("#jquery_jplayer_1").jPlayer({
ready: function() {
$(this).jPlayer("setMedia", {
mp3: "<%= @stream_url %>"
});
},
swfPath: "/js",
supplied: "mp3"
});
</script>
但是当我加载页面时,浏览器会阻塞URL字符串。返回的标记和脚本如下所示:
$(this).jPlayer("setMedia", {
mp3: "���DInfo+4F��!$&)+.0368;=@..."
这个字符串比我在这里发布的时间要长得多。
我最好的猜测是这是一个编码问题,但我无法弄明白。我已经尝试在rails控制台中进行调试,但这让我无处可去。
任何想法都将不胜感激。谢谢!
答案 0 :(得分:0)
您似乎遇到了一些编码问题。
当我手动发送HTTP请求并在C#中获取端点URL时,我不会遇到同样的问题,并且音频的端点URL完全没问题。
public void Run()
{
if (!string.IsNullOrEmpty(TrackUrl))
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(TrackUrl + ".json?client_id=YOUR_CLIENT_ID");
request.Method = "HEAD";
request.AllowReadStreamBuffering = true;
request.AllowAutoRedirect = true;
request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request);
}
}
private void ReadWebRequestCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult);
using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream()))
{
this.AudioStreamEndPointUrl = myResponse.ResponseUri.AbsoluteUri;
this.SearchCompleted(this);
}
myResponse.Close();
}
不知道它是如何适用于Ruby on Rails但你明白了。 您可以尝试使用类似的技巧,而不是使用client.get方法。