У меня есть двоичное значение, которое закодировано в URL, а затем отправлено в HttpServlet. Следующий код показывает, как я впервые попытался извлечь эти данные. Очень просто, за исключением того, что результатом является строка, а не байты.
Сначала казалось, что это работает, за исключением того, что дополнительный байт появился в трех байтах от конца. В итоге я понял, что мои данные обрабатываются как 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()