java - Java 中的 Http Post 字符串和二进制参数

标签 java http

我希望在 java 中发布一个具有字符串和二进制参数的表单,例如

name=sam&photo=<...二进制数据...>

不幸的是,可用的文档仅涵盖单独上传字符串或二进制数据。如何将两者结合起来?

最佳答案

您需要发送 mime 类型“application/x-www-form-urlencoded”。这些字段必须是文本。

字段名称和值被转义/编码,例如,空格字符被 +' 替换,保留字符使用 URL 编码转义。哦,这还不是全部...非字母数字字符被替换为%HH',如 %20 中的空格

所以两个十六进制数字代表字符的ASCII码。

如果只有 Java 可以为你做到这一点......哦等等它可以......

但这是一个新类。它从 Java 1.0 才出现。

查看 URLEncoder,它是 HTML 表单编码的实用程序类。

此类包含用于将字符串转换为 application/x-www-form-urlencoded MIME 格式的静态方法。您可以通过查阅 HTML 规范(如下引用)了解有关 HTML 表单编码的更多信息。

http://docs.oracle.com/javase/1.4.2/docs/api/java/net/URLEncoder.html

URLEncoder 处理以下内容:“字母数字字符“a”到“z”、“A”到“Z”以及“0”到“9”保持不变。特殊字符“.”、“-” 、“*”和“_”保持不变。空格字符“”被转换为加号“+”。 ”

这是二进制的关键...

“所有其他字符都是不安全的,首先使用某种编码方案将其转换为一个或多个字节。然后每个字节由 3 个字符的字符串“%xy”表示,其中 xy 是两位数的十六进制表示形式byte。推荐使用的编码方案是UTF-8。但是,出于兼容性原因,如果未指定编码,则使用平台的默认编码。”

始终指定 UTF-8。

这是 HTTP 规范。

http://www.w3.org/MarkUp/html-spec/html-spec_8.html

关于java - Java 中的 Http Post 字符串和二进制参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876933/

相关文章:

java - 加密在唯一文件中附加字节的文件 - 异常 : Given final block not properly padded

java - 没有找到接口(interface) org.springframework.data.jpa.domain.Specification] 的主要或默认构造函数,其根本原因

java - Java中的HTTP URL地址编码

rest - 如何指示 REST API 端点已删除

java - Solr : Always seeking for a core named "collection1"

java - .net webservices 使用复杂类型与其他平台,例如 java

java - 是否可以在 Arraylist 中对 hashmap 进行索引?

http - 响应幂等 HTTP POST 请求

qt - 如何从 QNetworkrequest 中删除 header ?

wcf - Host Header 可以和 URL 不同吗