Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Java HttpRequestHandler:发送文件作为响应_Java_Webserver_Apache Httpcomponents - Fatal编程技术网

Java HttpRequestHandler:发送文件作为响应

Java HttpRequestHandler:发送文件作为响应,java,webserver,apache-httpcomponents,Java,Webserver,Apache Httpcomponents,为了创建自己的基本web服务器,我正在使用httpCore。收到用户的特定请求后,必须启动文件传输操作。我正在用HttpRequestHandler处理请求。我的代码如下所示 private HttpRequestHandler mRequestHandler = new HttpRequestHandler() { @Override public void handle(HttpRequest request, HttpResponse response, HttpConte

为了创建自己的基本web服务器,我正在使用httpCore。收到用户的特定请求后,必须启动文件传输操作。我正在用HttpRequestHandler处理请求。我的代码如下所示

private HttpRequestHandler mRequestHandler = new HttpRequestHandler()
{
    @Override
    public void handle(HttpRequest request, HttpResponse response, HttpContext httpContext) throws HttpException, IOException
    {
        try{
        HttpEntity entity=null;     
        String contentType="text/html";

        entity = new EntityTemplate(new ContentProducer()
                {
                    public void writeTo(final OutputStream outstream)throws IOException
                    {
                        OutputStreamWriter writer = new OutputStreamWriter(outstream, "UTF-8");
                        String resp = "Server is up and running";

                        writer.write(resp);
                        writer.flush();
                    }
                });

        ((EntityTemplate)entity).setContentType(contentType);

        response.setEntity(entity);
        }catch(Exception e)
        {
            e.printStackTrace();
        }

    }
};

这是一个非常基本的响应,但是我希望将文件从服务器传输到客户机。如何发送文件作为响应?谢谢

我自己想出来的。如果有人遇到同样的问题,下面是我如何让它工作的

private HttpRequestHandler mRequestHandler = new HttpRequestHandler()
    {

        @Override
        public void handle(HttpRequest request, HttpResponse response, HttpContext context)
                throws HttpException, IOException 
            {
            try{
                File file = new File("/mnt/sdcard/Music/song.mp3");
                FileEntity body = new FileEntity(file, "audio/mpeg");
                response.setHeader("Content-Type", "application/force-download");
                response.setHeader("Content-Disposition","attachment; filename=song.mp3");
                response.setEntity(body);

            }catch(Exception e)
            {
                e.printStackTrace();
            }

            }

    };

我自己想出来的。如果有人遇到同样的问题,下面是我如何让它工作的

private HttpRequestHandler mRequestHandler = new HttpRequestHandler()
    {

        @Override
        public void handle(HttpRequest request, HttpResponse response, HttpContext context)
                throws HttpException, IOException 
            {
            try{
                File file = new File("/mnt/sdcard/Music/song.mp3");
                FileEntity body = new FileEntity(file, "audio/mpeg");
                response.setHeader("Content-Type", "application/force-download");
                response.setHeader("Content-Disposition","attachment; filename=song.mp3");
                response.setEntity(body);

            }catch(Exception e)
            {
                e.printStackTrace();
            }

            }

    };