ESP32 httpd:标头字段太长,服务器无法解释

Rac*_* Id 3 android-webview esp32 arduino-esp32

我想流式传输到 Anrdoid 应用程序内的 WebView。

我的代码是:

WebView cam = (WebView) findViewById(R.id.Cam);
        cam.getSettings().setLoadWithOverviewMode(true);
        cam.getSettings().setUseWideViewPort(true);
        cam.getSettings().setBuiltInZoomControls(true);
        cam.getSettings().setPluginState(WebSettings.PluginState.ON);
        cam.getSettings().setPluginState(WebSettings.PluginState.ON);
        cam.loadUrl("http://192.168.0.10");
Run Code Online (Sandbox Code Playgroud)

它可以在模拟器中运行,但如果我在智能手机上安装该应用程序,它就无法运行。我收到一个错误

Header fields are too long for the server to interpret
Run Code Online (Sandbox Code Playgroud)

如何摆脱这个错误?

rus*_*tyx 7

编辑sdkconfig并增加CONFIG_HTTPD_MAX_REQ_HDR_LEN例如这样:

CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024
Run Code Online (Sandbox Code Playgroud)

默认值为 512。不要将其设置得太高,以免浪费 RAM,请记住 ESP32 没有太多 RAM。

另外,最好在 WebView 中设置 User-Agent 标头,否则将使用系统默认的 User-Agent,该标头可能更长或更短,具体取决于实际的 Android 设备。

    cam.getSettings().setUserAgentString("Mozilla/5.0 (my app)");
Run Code Online (Sandbox Code Playgroud)

上面的内容可能正好适合请求长度的默认 512 字节。