当前位置: 首页 > 面试题库 >

如何使用Java HttpServer / HttpExchange在GET中获取查询字符串?

虞承泽
2023-03-14
问题内容

我试图用Java创建一个简单的HttpServer来处理GET请求,但是当我尝试获取请求的GET参数时,我注意到HttpExchange类没有用于该方法的方法。

有人知道读取GET参数(查询字符串)的简单方法吗?

这是我的处理程序的样子:

public class TestHandler{
  @Override
  public void handle(HttpExchange exc) throws IOxception {
    String response = "This is the reponse";
    exc.sendResponseHeaders(200, response.length());

    // need GET params here

    OutputStream os = exc.getResponseBody();
    os.write(response.getBytes());
    os.close();
  } 
}

..和主要方法:

public static void main(String[] args) throws Exception{
  // create server on port 8000
  InetSocketAddress address = new InetSocketAddress(8000);
  HttpServer server = new HttpServer.create(address, 0);

  // bind handler
  server.createContext("/highscore", new TestHandler());
  server.setExecutor(null);
  server.start();
}

问题答案:

下列: httpExchange.getRequestURI().getQuery()

将返回类似于以下格式的字符串: "field1=value1&field2=value2&field3=value3..."

因此您可以自己简单地解析字符串,这就是解析函数的样子:

public Map<String, String> queryToMap(String query) {
    Map<String, String> result = new HashMap<>();
    for (String param : query.split("&")) {
        String[] entry = param.split("=");
        if (entry.length > 1) {
            result.put(entry[0], entry[1]);
        }else{
            result.put(entry[0], "");
        }
    }
    return result;
}

这就是您可以使用它的方式:

Map<String, String> params = queryToMap(httpExchange.getRequestURI().getQuery()); 
System.out.println("param A=" + params.get("A"));


 类似资料:
  • 问题内容: 我们可以像在PHP中一样在Node.js中获取查询字符串中的变量吗? 我知道在Node.js中,我们可以在请求中获取URL。有没有获取查询字符串参数的方法? 问题答案: 在Express中,它已经为您完成,您只需使用req.query即可: 否则,在NodeJS中,您可以手动访问req.url和内置模块来[url.parse](https://nodejs.org/api/url.ht

  • 问题内容: 从Flask文档中关于如何获取查询字符串的信息并不明显。 所以 问题答案:

  • 我使用的是Spring的(Spring版本4.1.4)。对于我的类“JdbcTemplate”实例,我正在将select查询作为一个准备好的语句。但是,我的查询意外地没有返回任何结果。因此,我确实需要调试我的查询,并确保查询是我期望的。 如何取回作为< code>JdbcTemplate的内部< code>PreparedStatement的一部分对数据库执行的实际SQL? 我熟悉使用预制语句的

  • 我能够启动Spring Boot GraphQL Java Server(GraphQL作为运行查询的用户界面)。现在,我试图将查询字符串从GraphiQL(实际上是有效负载中发送到/graphqlendpoint的查询)传递到查询解析器类中。我尝试了不同的选择,但没有任何帮助。

  • 问题内容: 是否有通过jQuery(或不通过jQuery)检索[查询字符串]值的无插件方法? 如果是这样,怎么办?如果没有,是否有可以做到的插件? 问题答案: const urlParams = new URLSearchParams(window.location.search); const myParam = urlParams.get(‘myParam’); 原版的 为此,您不需要jQue

  • 问题内容: 我有这样的网址: 我需要做的是在符号(查询字符串)后获取详细信息-即。如何使用JavaScript来获得? 到目前为止,我所做的是: 我不知道下一步该怎么做。 问题答案: 看一看的MDN文章有关。 QueryString在中可用。 同样适用于旧版浏览器的解决方案 MDN提供了一个如何获取QueryString中可用的单个键的值的示例在以上引用的文章中不再提供 。像这样: 在现代浏览器中