Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android打算通过HTTP身份验证流式传输音频_Android_Http_Android Intent_Streaming - Fatal编程技术网

Android打算通过HTTP身份验证流式传输音频

Android打算通过HTTP身份验证流式传输音频,android,http,android-intent,streaming,Android,Http,Android Intent,Streaming,我有一个应用程序,可以启动一个活动,从HTTP服务器流式传输音频。Android将通过列出一系列可以播放流媒体音频的应用程序来询问用户如何完成活动。Google Play Music就是其中之一,所以几乎每台设备都能做到这一点。这很好,但是我遇到了一个服务器问题,需要通过HTTP头进行身份验证。身份验证并不是什么花哨的东西,只是基本的,它只是用户名:password base64,并填充在HTTP头中。问题是,我如何将其添加到意图中?我现有的代码与此类似: Uri uri = Uri.parse

我有一个应用程序,可以启动一个活动,从HTTP服务器流式传输音频。Android将通过列出一系列可以播放流媒体音频的应用程序来询问用户如何完成活动。Google Play Music就是其中之一,所以几乎每台设备都能做到这一点。这很好,但是我遇到了一个服务器问题,需要通过HTTP头进行身份验证。身份验证并不是什么花哨的东西,只是基本的,它只是用户名:password base64,并填充在HTTP头中。问题是,我如何将其添加到意图中?我现有的代码与此类似:

Uri uri = Uri.parse("http://host:5151/download?path=\"blah\"");
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "audio/*");

a.startActivity(i); // variable 'a' is defined as an Activity elsewhere and refers to the currently running Activity. Nothing strange there.
当不需要身份验证时,上述方法有效。如果需要,我可以在使用现有服务器时执行以下操作:

Uri uri = Uri.parse("http://username:pw@host:5151/download?path=\"blah\"");
注意在主机前插入的用户名和密码。这适用于我目前使用的服务器,因为它似乎支持在URL本身中传递基本身份验证的旧标准方式。然而,这并不理想。我尝试过的另一台服务器失败了,因为它需要HTTP头中的身份验证详细信息,特别是授权头。然而,对于要插入到请求中的头,意图可能需要一些“额外”来指定用户名和密码。我不知道这是否可能,如果可能的话,我怎么知道那些额外的是什么


我的问题是:这可能吗?如果可能,怎么可能?

您找到解决方案了吗?不,还没有。还在调查。我确实查看了谷歌音乐播放器的源代码,但它似乎没有在意图中寻找任何特殊的附加内容。听起来你需要创建一个http post请求并从该请求中获取Uri:HttpPost请求=new HttpPost(“);List qparams=new ArrayList(3);qparams.add(new BasicNameValuePair(“Authoritaton”,u/p));request.setEntity(新的UrlEncodedFormEntity(qparams));URI URI=request.getURI();我不确定这是否可行,因为我没有尝试过,但我怀疑值得尝试一下!vkinra思路不错,不过,您使用的是Java.net.URI类,但Intent.setDataAndType()是方法需要一个android.net.Uri类。不幸的是,这些类除了名称之外都是不相关的类。有一秒钟,我以为你有它,但没有。