二进制HTTP之后的参数我有一个二进制值是URL编码,然后发布到一个HttpServlet的。以下代码显示了我第一次尝试提取这些数据的方式。非常简单,除了结果是一个字符串,而不是字节。获取在的Java/Tomcat的/ HttpServlet的
这似乎在第一工作,只是一个额外的字节出现了3个字节结束。我最终发现的是,我的数据被视为Unicode,并从一种Unicode编码转换为UTF-8。
,因此,其他的是让整个机身后和解析它自己,我怎么能提取我的数据,而不把它当作URL编码后的字符串进行解码?我是否误解了发布数据的规格,或者这是Java/Tomcat的特定问题?
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Receive/Parse the request
String requestStr = request.getParameter("request");
byte[] rawRequestMsg = requestStr.getBytes();
这里是我使用的要求了Python测试脚本的一个片段:
urlRequest = urllib.urlencode({'request': rawRequest})
connection = urllib.urlopen(self.url, data = urlRequest)
result = connection.readlines()
connection.close()
你可以显示你有什么话发布了一些例子,你得到了什么? – axtavt 2010-01-07 00:32:28
正如其名称所暗示的那样,URL编码是针对URL的。二进制数据应该用例如Base64编码。 – 2010-01-07 00:42:09