读取 post 请求值 HttpHandler

2024-02-13

我正在编写一个小型 Java 应用程序,它实现了一个从客户端接收 http post 命令的 http 服务。

我用来实现所有这些的类是 com.sun.net 中的 HttpHandler 和 HttpServer。包裹。

现在我正在实施一个handle(HttpExchange exchange)处理请求的函数,并且我在读取请求收到的发布值时遇到问题,因为我对这些值的唯一访问是通过HttpExchange.getResponseBody()这只是一个输出流。

我正在寻找解析文本发布值和上传的文件。


我编写了处理我的项目的多部分请求的类Sceye-Fi http://code.google.com/p/sceye-fi/,一个 HTTP 服务器,使用com.sun.net.httpserverjava 6 附带的类,用于接收从Eye-Fi http://www.eye.fi card.

这可以帮助文件上传(多部分帖子)。

对于非多部分帖子,您需要执行以下操作:

// determine encoding
Headers reqHeaders = exchange.getRequestHeaders();
String contentType = reqHeaders.getFirst("Content-Type");
String encoding = "ISO-8859-1";
if (contentType != null) {
    Map<String,String> parms = ValueParser.parse(contentType);
    if (parms.containsKey("charset")) {
        encoding = parms.get("charset");
    }
}
// read the query string from the request body
String qry;
InputStream in = exchange.getRequestBody();
try {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    byte buf[] = new byte[4096];
    for (int n = in.read(buf); n > 0; n = in.read(buf)) {
        out.write(buf, 0, n);
    }
    qry = new String(out.toByteArray(), encoding);
} finally {
    in.close();
}
// parse the query
Map<String,List<String>> parms = new HashMap<String,List<String>>();
String defs[] = qry.split("[&]");
for (String def: defs) {
    int ix = def.indexOf('=');
    String name;
    String value;
    if (ix < 0) {
        name = URLDecoder.decode(def, encoding);
        value = "";
    } else {
        name = URLDecoder.decode(def.substring(0, ix), encoding);
        value = URLDecoder.decode(def.substring(ix+1), encoding);
    }
    List<String> list = parms.get(name);
    if (list == null) {
        list = new ArrayList<String>();
        parms.put(name, list);
    }
    list.add(value);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取 post 请求值 HttpHandler 的相关文章

随机推荐

  • Pip3安装模块在哪里?

    乌班图15 10 Python 3 4 3 姜戈 1 8 7 当我尝试import django在 python3 解释器中 它说ImportError No module named django 我知道 Django 1 8 7 已安装
  • 获取 #000 格式的背景颜色而不是 RGB [重复]

    这个问题在这里已经有答案了 使用此代码 我可以获得表中任何 TD 的 RGB 颜色 alert this css background color 结果是 RGB 0 255 0 jquery 是否可以获取 000 格式 或者我可以使用函数
  • Python 十六进制变量赋值

    我使用一个变量来存储由套接字发送的数据 当我在程序中分配它时 它可以工作 但是当我从文件中读取它时 它被视为字符串 Example data x31 x32 x33 print data Outputs 123 lt this is the
  • ShutDownListener 中的 TaskCanceledException

    目前我们看到很多TaskCanceledException被甩掉MS Internal ShutDownListener HandleShutDown 这个问题从 5 月中旬开始 可能与 Net 或 Windows 10 的某些更新有关 我
  • 减少 Azure 上传的文件大小

    我在 Azure 上有一个托管服务 每次我想放置包 cspkg 和 cscfg 文件 时总是需要很长时间 我的 cspkg 文件有 18 MB 有没有更好的上传方法 我的想法是将图像 样式等放入 Azure 上的存储中 并将我的 Web 应
  • WSH 脚本单元测试框架[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 WSH 脚本的单元测试框架 vbs wsf 而不是 VB6 VBA 除了这个项目 我找不到任
  • 如何在 Chrome 应用程序中显示 PDF 的数据 URI?

    我有一个从 JavaScript PDF 库 jsPDF 生成的数据 URI 似乎没问题 因为当我使用 console log 显示它并将其粘贴到浏览器 URL 字段时 它可以工作 但是 我无法让它在 Chrome 应用程序中显示 无论是在
  • 来自 PHAsset 的 NSURL

    我正在将我们的应用程序转换为使用 iOS8 的照片框架 ALAsset 框架显然是 iOS8 下的二等公民 我遇到的一个问题是我们的架构确实需要一个 NSURL 来表示媒体在 磁盘 上的位置 我们用它来将媒体上传到我们的服务器以进行进一步处
  • 如何创建继承自TextBox的类

    我想制作一个继承 TextBox 的自定义 TextBox 类 并重写 onKeyDown 事件 以便在按下 Enter 键时启用 Tab 功能 这个问题有重复项 但我发现没有一个答案有意义 所以我想开始一个新的讨论 我不想从 UserCo
  • 预加载图像并在加载时显示微调器

    Hy 我使用 uploadify 上传一些图像 在我在列表中显示所有图像拇指后 当我单击图像拇指时 会使用此功能在 div 中打开更大的图像 thumbs li a click function var largePath this att
  • 在模式匹配时修改字段

    我今天第一次尝试 Rust 编写 XML 分词器 自然不明白所有内容 我有一个带有可以采用枚举值的字段的结构 enum State Outside InATag str struct Tokenizer state State In a i
  • 如何禁止在webpack编译过程中替换process.env变量?

    Story 我正在开发 AWS Lambda 函数并使用编译代码webpack 我读过一些文章 似乎process env变量在编译期间自动替换 虽然这很酷 但我想禁止这种行为 Why 因为我使用 AWS Lambda 仪表板传递环境变量
  • golang docker run的无限for循环问题

    我尝试做简单的无限循环任务 不使用 docker 也能正常工作 但是当我使用 docker 时 它只无限执行 for 循环的 else 部分 实际上可能是什么问题 docker 是否有无限循环的问题 我的 main go 文件如下所示 pa
  • Word 2010 Interop PDF 导出缺少边框线

    我有一个奇怪的问题 我正在使用 Word 2010 Interop 将 WordML 文档导出为 PDF 有一个带有顶线和底线的页脚
  • 带 ViewPager 的 CollapsingToolbarLayout 内的片段不会向下滑动

    我有一个带有 CollapsingToolbarLayout 和 TabLayout 的活动 当我左右滑动时 它在片段之间完美移动 然而 当我尝试向下滚动 屏幕截图中的红色箭头 时 它会忽略它 我尝试向片段添加 ScrollView 但它没
  • 该证书在 ios 钥匙串中的颁发者无效

    钥匙串显示证书错误 gt 该证书的颁发者无效 请参阅屏幕截图 参考链接 gt 该证书的颁发者钥匙串无效 https stackoverflow com questions 28890084 this certificate has an i
  • 您可以在 asp:Menu 控件中有 2 个指向同一页面的 url 吗?

    我有一个 asp Menu 它包含一个指向的顶级菜单项http www example com one aspx http www example com one aspx 当您将鼠标悬停在顶级菜单项上时 它会显示一个下拉菜单 其中一个选项
  • 强制绝对 div 听父母的填充?

    这就是我的 HTML CSS现在好像 这就是我的want它看起来像 如何修改下面的 HTML CSS 使其按照我想要的方式显示 HTML div div div class update div div div CSS update wid
  • Sphinx 无法导入任何内容

    我正在尝试使用 sphinx 来记录我的项目 我在所有模块和文件中使用了 autodoc 字符串 我使用sphinx apidoc自动生成rst我的代码的文件 到目前为止 一切都很好 问题是sphinx 无法导入我的任何模块 即使我已将我的
  • 读取 post 请求值 HttpHandler

    我正在编写一个小型 Java 应用程序 它实现了一个从客户端接收 http post 命令的 http 服务 我用来实现所有这些的类是 com sun net 中的 HttpHandler 和 HttpServer 包裹 现在我正在实施一个