Как я могу обработать данные формы в сервере Java httpserver - PullRequest
0 голосов
/ 07 января 2019

Я размещаю http веб-сервер в Java (просто localhost), чтобы показать автономный веб-сайт (обычный html). Чтобы отправить данные обратно в Java, кнопка сохранения выполняет вызов с данными записи / формы, используя ajax.

Я использую com.sun.net.httpserver.HttpServer;

и хотел бы просто иметь возможность получить строку xml в обработчике.

Я пробовал несколько картографических функций, и примеры можно найти в Интернете. никто не помог. Пока что все они нашли пустые результаты.

Моя цель - просто выбрать переменную xml, другие переменные не имеют значения. (итеративный поиск / парсер не требуется)

спасибо заранее! Erik

Javascript код:

<script type ="text/javascript">
function saveFile() {

  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      alert(this.responseText);
    }
  };
  xhttp.open("POST", "/", true);
  //xhttp.setRequestHeader("Accept", "text");
  xhttp.setRequestHeader("content-type", "multipart/form-data");
  formData.append('xml', '<xml>some xml thing here</xml>');
  xhttp.send(formData);
}
</script>

java handler code:

private static void handleRequest(HttpExchange exchange) throws IOException {
          String root = "TestPlanDesigner";

          URI uri = exchange.getRequestURI();
          //System.out.println(uri);
          //printRequestInfo(exchange);

          //if its the root, this means its posting the data
          if(uri.getPath().equals("/"))
          {
              if(exchange.getRequestMethod().equals("POST"))
              {
                  //handle the post request.
                  String response = "File saved successfully";
                  exchange.sendResponseHeaders(200, response.getBytes().length);
                  OutputStream os = exchange.getResponseBody();
                  os.write(response.getBytes());
                  os.close();
              }
          }  

Одна строка для выбора данных формы xml в Java внутри обработчика.

1 Ответ

0 голосов
/ 07 января 2019

Нашел, оно было в теле, а не в заголовке.

в обработчике:

String payloadrequest = getStringFromInputStream(exchange.getRequestBody());



private static String getStringFromInputStream(java.io.InputStream inputStream) {

    BufferedReader br = null;
    StringBuilder sb = new StringBuilder();
    String line;
    try {

        br = new BufferedReader(new InputStreamReader(inputStream));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return sb.toString();
}
...