NanoHTTPD提供空文件

时间:2016-02-13 22:29:38

标签: android google-cast httpserver nanohttpd

我正在尝试将Google Cast功能添加到我的媒体应用中,该应用主要处理本地存储的媒体。由于转换接收器无法直接访问本地存储在设备上的文件,因此我使用NanoHTTPD运行一个简单的Web服务器,基本上只提供我需要加载转换接收器的内容的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; }
    }

}

2 个答案:

答案 0 :(得分:0)

您是如何尝试访问NanoHTTPD启动的服务器的?要越过所有的T和点,我要确保:

NanoHTTPD在服务主题上。

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

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

请求访问网络的权限。

超越WebView,使用其他实际设备(如果可用)访问此丢弃服务器。

答案 1 :(得分:0)

我在之前的项目中遇到过这个问题。我也开始使用NanoHTTPD但是我不记得究竟是什么以及为什么我必须更改它以使用Cast设备。但是,您可以查看我的版本:https://github.com/entertailion/Caster/blob/master/src/com/entertailion/java/caster/HttpServer.java