Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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 NanoHTTPD提供空文件_Android_Google Cast_Httpserver_Nanohttpd - Fatal编程技术网

Android NanoHTTPD提供空文件

Android NanoHTTPD提供空文件,android,google-cast,httpserver,nanohttpd,Android,Google Cast,Httpserver,Nanohttpd,我正在尝试将GoogleCast功能添加到我的一个媒体应用程序中,该应用程序主要处理本地存储的媒体。由于cast接收器无法直接访问本地存储在设备上的文件,因此我使用NanoHTTPD运行一个简单的web服务器,基本上只提供我需要cast接收器加载的内容的FileInputStream 这将确定一个简单的URL,由手机的内部网IP地址以及NanoHTTPD子类的构造函数中指定的端口组成。然而,这并不适用。相反,服务结果似乎是一个空流,因此是一个空文件,而设备上的实际文件被证明是存在且非空的(应用程

我正在尝试将GoogleCast功能添加到我的一个媒体应用程序中,该应用程序主要处理本地存储的媒体。由于cast接收器无法直接访问本地存储在设备上的文件,因此我使用NanoHTTPD运行一个简单的web服务器,基本上只提供我需要cast接收器加载的内容的FileInputStream

这将确定一个简单的URL,由手机的内部网IP地址以及NanoHTTPD子类的构造函数中指定的端口组成。然而,这并不适用。相反,服务结果似乎是一个空流,因此是一个空文件,而设备上的实际文件被证明是存在且非空的(应用程序本身可以读取)

NanoHTTTPD子类:

package de.julianostarek.musicplayer.Server;


import android.util.Log;
import android.widget.Toast;

import java.io.FileInputStream;
import java.util.Map;

import fi.iki.elonen.NanoHTTPD;


/**
 * Created by Julian Os on 13.02.2016.
 */
public class LocalServer extends NanoHTTPD {
    public static final String TAG = "LocalServer.class";

    public LocalServer(int port) {
        super(port);
    }

    public LocalServer(String hostname, int port) {
        super(hostname, port);
        Log.e(TAG, hostname + ":" + port);
    }

    @Override
    public Response serve(IHTTPSession session) {
        try {
            return new Response(Response.Status.OK, "audio/flac", session.getInputStream());
        }catch (Exception e) {
            Log.e(TAG, "Serving failed: " + e.toString()); return null; }
    }

}

您是如何尝试访问NanoHTTPD启动的服务器的?要交叉所有T和点所有i,请确保:

NanoHTTPD位于服务线程上

提供一个简单的helloworld.html来测试它

最好使用WebView查看,而不是专用应用程序

请求访问网络的权限


在WebView之外,使用另一个实际设备(如果可用)访问此一次性服务器。

我在以前的项目中遇到过此问题。我也开始使用NanoHTTPD,但我记不清到底是什么以及为什么我必须将其更改为使用Cast设备。但是,您可以查看我的版本:

请显示您使用的完整url。这不是url。而不是我问的。我问你客户端使用哪个url。我要从桌面的chrome浏览器访问该文件,它是在一个服务中启动的