android-webview - ESP32 httpd : Header fields are too long for the server to interpret

标签 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");

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

Header fields are too long for the server to interpret

如何摆脱这个错误?

最佳答案

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

CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024

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

另外最好在你的 WebView 中设置 User-Agent header ,否则将使用系统默认的 User-Agent,根据实际的 Android 设备可以更长或更短。

    cam.getSettings().setUserAgentString("Mozilla/5.0 (my app)");

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

关于android-webview - ESP32 httpd : Header fields are too long for the server to interpret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67849381/

相关文章:

android - 在 ViewPager 中带有视频的 WebView 即使在水平滚动后也会继续播放音频

android - 如何在 WebView 中打开 PDF/Docx

c++ - 在新数组中存储字符数组地址

node.js - 将实时视频流保存到视频文件

Android - 在webview中登录后提取cookies

error-handling - ESP32报文的BLE错误检查

android - "flutter (os error: no address associated with hostname, errno = 7)"仅适用于安卓

esp32 - 两个 ESP32 之间的串行通信

c++ - 获取[e][wifigeneric.cpp :739] hostbyname(): dns failed when performing POST request

android - 通过类 WebView 加载 URL 时出错