标签: nanohttpd

是否可以仅将NanoHttpd限制为localhost?

我在我的本地桌面上运行Nano80tat 8080.我可以在浏览器中本地访问服务器http://localhost:8080/.那部分按预期工作.

但是,我不希望我的邻居(或者更糟的是,世界)也能够访问它http://my.local.ip.add:8080/.

如何将其限制为仅限本地主机访问,以便我是唯一一个可以看到这些页面由我本地运行的NanoHttpd实例提供服务的人?

java security embeddedwebserver nanohttpd

5
推荐指数
1
解决办法
1883
查看次数

Android设备上的HTTPS服务器使用NanoHttpd

我正在尝试使用NanoHttpd在Android设备上运行HTTPS服务器(我的最终目标是在Android上运行WSS服务器).我在Android上使用NanoHttpd成功运行了HTTP Server和Websocket.我使用此命令在MAC上生成密钥并将其复制到我的设备上:

keytool -genkey -keystore key.keystore -storepass keypass -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
Run Code Online (Sandbox Code Playgroud)

我写了以下代码:

keyStore = KeyStore.getInstance("BKS");
keyStore.load(stream, keyStorePwd.toCharArray());
keyManagerFactory = KeyManagerFactory
           .getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, keyStorePwd.toCharArray());
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(keyManagerFactory.getKeyManagers(), null, null);
server.makeSecure(sc.getServerSocketFactory());
server.start();
Run Code Online (Sandbox Code Playgroud)

我在Chrome 38和42上测试了这个,"最小SSL/TLS"标志设置为"SSLv3".但是当我想连接到服务器时,我一直收到"ERR_SSL_VERSION_OR_CIPHER_MISMATCH"错误.

我在多台机器和浏览器上尝试了不同的协议实例(SSL/TLS).我尝试了NanoHttpd SSLServerSocketFactory方法.但错误是一样的.

我已经看过一些样本,包括:https: //github.com/NanoHttpd/nanohttpd/issues/139

有人对此发表评论吗?

ssl https wss android nanohttpd

5
推荐指数
1
解决办法
8145
查看次数

使用NanoHttpd进行视频流传输,错误:java.net.SocketException:sendto failed:EPIPE(Broken pipe)

我需要流式传输视频并在网页中持续播放.我正在使用Nanohttpd库在我的Android应用程序中运行服务器.我可以在页面加载时流式传输和播放视频.视频完成播放后,我无法再播放视频.每次我需要刷新页面才能播放视频.尝试第二次玩时出现以下错误.

java.net.SocketException: sendto failed: EPIPE (Broken pipe)
    at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:546)
    at libcore.io.IoBridge.sendto(IoBridge.java:515)
    at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
    at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
    at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBody(NanoHTTPD.java:1386)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectEncoding(NanoHTTPD.java:1359)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectTransferAndEncoding(NanoHTTPD.java:1349)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.send(NanoHTTPD.java:1335)
    at server.http.android.androidhttpserver.server.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:769)
    at server.http.android.androidhttpserver.server.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:186)
    at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.ErrnoException: sendto failed: EPIPE (Broken pipe)
    at libcore.io.Posix.sendtoBytes(Native Method)
    at libcore.io.Posix.sendto(Posix.java:176)
    at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:278)
    at libcore.io.IoBridge.sendto(IoBridge.java:513)
    at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
    at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
    at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBody(NanoHTTPD.java:1386)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectEncoding(NanoHTTPD.java:1359)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectTransferAndEncoding(NanoHTTPD.java:1349)
    at server.http.android.androidhttpserver.server.NanoHTTPD$Response.send(NanoHTTPD.java:1335)
    at server.http.android.androidhttpserver.server.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:769)
    at server.http.android.androidhttpserver.server.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:186)
    at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)

我发送的回复如下.

@Override
public Response serve(IHTTPSession session) {
   FileInputStream fis = null;
    File …
Run Code Online (Sandbox Code Playgroud)

java android nanohttpd

5
推荐指数
1
解决办法
2021
查看次数

Using nanohttpd for server on localhost, how to serve the static HTML code in the whole directory?

I can't make nanohttpd work. It seems not be able to find the www directory in app's root.

My code is at https://github.com/tlkahn/neonx

My code at MainActivity.java:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BottomNavigationView navView = findViewById(R.id.nav_view);
        mWebView = findViewById(R.id.webkit);
        navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        webSettings.setDomStorageEnabled(true);
        mWebView.getSettings().setLoadsImagesAutomatically(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                return false;
            }
        });
        if (!haveNetworkConnection()) {
            new AlertDialog.Builder(this)
                .setTitle("You are not connected to internet.")
                .setMessage("Are you …
Run Code Online (Sandbox Code Playgroud)

html java android localhost nanohttpd

5
推荐指数
2
解决办法
212
查看次数

NanoHTTPD的另一种方法是处理同时连接?

我开始在项目中使用NanoHTTPD.事实上,它的简洁性非常好.不幸的是,事实证明我需要处理同时连接,例如我有一个很长的响应,同时服务器不会被阻止.

您有什么推荐的吗?我需要它简单,功能丰富的Nano.

java apache nanohttpd

4
推荐指数
1
解决办法
1894
查看次数

为什么在NanoHTTPD上找不到图像和样式文件

问题:我正在使用NanoHTTPD.它运行良好,但它不提供.js文件,图像和其他.

详细说明:我pages在assets文件夹中有一个文件夹.此文件夹包含index.html,css文件,图像和其他.我正在使用像这样的NanoHTTPD,但是当我使用浏览器浏览时,没有任何样式或图像.服务器无法找到图像和其他文件.只有index.html文件的内容.活动:

MyHTTPD server = null;
        try {
            server = new MyHTTPD(getApplicationContext());
            try
               {
                   server.start();
               }
               catch( IOException ioe )
               {
                   System.err.println( "Couldn't start server:\n" + ioe );
                   System.exit( -1 );
               }
               System.out.println( "Listening on port 8080. Hit Enter to stop.\n" );
               try { System.in.read(); } catch( Throwable t ) {
                   System.out.println("read error");
               };
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

MyHTTPD类

public Context ctx = null; …
Run Code Online (Sandbox Code Playgroud)

android nanohttpd

4
推荐指数
1
解决办法
6234
查看次数

可嵌入的Java HTTP服务器

支持可嵌入的Java HTTP服务器时似乎存在多个极端情况.我已经看到了极简主义的方法,如NanoHTTPD,并利用com.sun.net.httpserver包试图嵌入Jetty和Tomcat.理想的可嵌入HTTP服务器将被实现,以便它可以通过Executor启动并带有Servlet/JSP支持,但是否则应允许使用其父级的记录器并允许集成其JMX钩子.

同样,它也应该是模块化的,您可以选择不包括某些功能.有没有人遇到过具有这种特性的任何基于Java的HTTP服务器?

java tomcat web-applications jetty nanohttpd

3
推荐指数
1
解决办法
971
查看次数

android中的nanohttpd不会工作

我试图让nanohttpd在android下工作.我用过这个例子:

package com.example.android_test;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;

import com.example.android_test.NanoHTTPD.Response.Status;

import android.app.Activity;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class MainActivity extends Activity {
  private static final int PORT = 8765;
  private TextView hello;
  private MyHTTPD server;
  private Handler handler = new Handler();

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    hello = (TextView) findViewById(R.id.hello);
  }

  @Override
  protected void onResume() {
    super.onResume();

    TextView textIpaddr = (TextView) findViewById(R.id.ipaddr);
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    int ipAddress = …
Run Code Online (Sandbox Code Playgroud)

android nanohttpd

3
推荐指数
1
解决办法
2461
查看次数

使用服务器更新您的应用程序的最佳方法是什么?

我的应用程序由基于登录的用户系统组成,用户将在其中接收他的任务。用户的任务列表需要定期与服务器同步,以便任何新任务都会立即反映在应用程序上。我之前在其他应用程序中做过这种同步的东西,但我想知道最好的方法来做到这一点。我有两种方法,请告诉我哪个更好,或者如果您有任何其他想法,请告诉我。

方法一

我可以使用IntentServiceAlarmManager以固定的时间间隔运行后台服务,并通过 http 请求(即应用程序到服务器请求)检查服务器上的任何更改。

方法 2

我可以使用NanoHTTPD库通过我的应用程序托管一个小型 TCP 服务器,并且在服务器上的每个新条目之后,我可以从服务器向这个小型 TCP 主机发出请求,通知这些更改(即服务器到应用程序请求)。

我以前使用过APPROACH1,但我对APPROACH2更感兴趣(我认为这会消耗更少的电量)。所以请让我知道哪种方法更好(即更有效、更安全等)来做到这一点。如果您有任何其他想法,请随时分享。

java performance android intentservice nanohttpd

3
推荐指数
1
解决办法
195
查看次数

NanoHTTPD - 无法添加 gradle 依赖项

我正在尝试将NanoHTTPD添加到我的 Android 项目中。

正如 README.md 中提到的,我添加了

dependencies {
    runtime(
       [group: 'org.nanohttpd', name: 'nanohttpd', version: '2.3.1'],
    )
}
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

Could not find method runtime() for arguments [{group=org.nanohttpd, name=nanohttpd, version=2.3.1}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Run Code Online (Sandbox Code Playgroud)

我也尝试添加

repositories {
    mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)

在别处提到,但同样的错误。

我尝试了通常的方法:

implementation 'org.nanohttpd.nanohttpd:2.3.1'
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

Failed to resolve: org.nanohttpd.nanohttpd:2.3.1:
Run Code Online (Sandbox Code Playgroud)

我正在使用 Android Studio 3.2.1 似乎有很多人在 Android 中愉快地使用它。我错过了什么?

android nanohttpd android-gradle-plugin

3
推荐指数
1
解决办法
1704
查看次数