NanoHTTPD отвечает одним и тем же файлом на все файлы веб-страницы

У меня есть приложение для Android с веб-обзором, и мне нужно, чтобы Nanohhtd имел веб-сервер в моем приложении для Android.

Отредактировано: все файлы и структура сохраняются во внутреннем хранилище приложения.

Метод ответа сервера отвечает на файл, который я вызываю: главная страница html. Это нормально, и страница отображается в веб-просмотре, но javascript не работает.

Вместо того, чтобы возвращать только HTML-страницу, которая мне нужна, она заменяет весь код в файлах, которые нужны моей странице для того же кода: HTML-содержимое главной веб-страницы.

Когда я проверяю страницу, все файлы js имеют то же содержимое, что и основной html-файл.

Например:

главная страница hmtl - NanoHTTPD должен был его вернуть.

<!DOCTYPE html>
<html>
<head>
<script src='sw/bootstrap/js/bootstrap.min.js'></script>
<script src="generator.js"></script>
<script src='sw/swipe.js'></script>
</head>
<body>
</body>
</html>

И файлы в нем должны были иметь свой код

Например, генератор.js. вместо этого:

function getAltura(alturaOriginal, larguraOriginal, larguraRedimensionada){
    var n1 = alturaOriginal * larguraRedimensionada;
    return n1 / larguraOriginal;
}

function gerarPagina(numPagina){
    $(".swipe-wrap").append("<div id="+numPagina+"><img class='paginas' src='edicoes/"+raiz+"/paginas/pagina_"+numPagina+".png'> </div>");
}

function setLinkVideo(linkVideo){
    document.getElementById('video-noticia').src = linkVideo;
}

генератор.js имеет это:

 <!DOCTYPE html>
    <html>
    <head>
    <script src='sw/bootstrap/js/bootstrap.min.js'></script>
    <script src="generator.js"></script>
    <script src='sw/swipe.js'></script>
    </head>
    <body>
    </body>
    </html>

Так же, как главная страница. И это происходит со всеми файлами внутри html-страницы, на которую отвечает nanohttp.

Наконец, я использую этот код как ответ NanoHTTPD:

@Override
public Response serve(IHTTPSession session) {
    String answer = "";
    try{
        FileReader filereader = new FileReader(contextoMain.getFilesDir()+ "/"+path);
    BufferedReader reader = new BufferedReader(filereader);
    String line = "";
    while ((line = reader.readLine()) != null) {
        answer += line;
    }
    reader.close();    
}catch(IOException ioe) {
    Log.w("Httpd", ioe.toString());
}
    return newFixedLengthResponse(answer);
}

Путь к файлу в папке android filesDir правильный. Но что я делаю неправильно, что Nanohttp отвечает одинаковым кодом на все файлы?

Он должен был ответить только на один файл.

Заранее спасибо!

Класс сервера - NanoHTTP сервер

import android.content.Context;
import android.util.Log;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;

/**
 * Created by on 11/12/15.
 * gerencia o webserver
 */
public class Myserver extends NanoHTTPD {
    private final static int PORT = 8080;
    Context contextoMain;
    private String path;

    public Myserver(Context cont, String _path) {
        super(PORT);
        contextoMain = cont;
        this.path = _path;
        try {
            start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println( "\nRunning! Point your browsers to http://localhost:8080/ \n" );
    }

    @Override
    public Response serve(IHTTPSession session) {
        String answer = "";
        try{
           //InputStreamReader input = new InputStreamReader(contextoMain.getAssets().open("test.html"));
            FileReader filereader = new FileReader(contextoMain.getFilesDir()+ "/"+path);
        BufferedReader reader = new BufferedReader(filereader);
        String line = "";
        while ((line = reader.readLine()) != null) {
            answer += line;
        }
        reader.close();    
    }catch(IOException ioe) {
        Log.w("Httpd", ioe.toString());
    }
        return newFixedLengthResponse(answer);
    }

1 ответ

Finally, I use this code as response of the NanoHTTPD, Ну, ты должен был начать с этого. И важная информация отсутствует, какова ценность в path? И где мы можем увидеть, что вы смотрите, какой файл запрашивается? Вы этого не делаете. Вы только сервер файл в path что всегда так же, как и где бы вы изменили?

Другие вопросы по тегам