我希望在 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 规范。
关于java - Java 中的 Http Post 字符串和二进制参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876933/