当前位置: 首页 > 知识库问答 >
问题:

是否可能在HttpServer.CreateContext的处理程序方法内部获得完整的http请求?

江文斌
2023-03-14

我正在跟随这个示例代码,并且想知道是否有可能在处理程序方法内部获得完整的http get请求?例如,我有http://localhost:8000/test?param1=value1&param2=value2

我找不到任何方法获得请求的这些参数。下面是代码:

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class Test {

    public static void main(String[] args) throws Exception {
        HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
        server.createContext("/test", new MyHandler());
        server.setExecutor(null); // creates a default executor
        server.start();
    }

    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange t) throws IOException {
            String response = "This is the response";
            t.sendResponseHeaders(200, response.length());
            OutputStream os = t.getResponseBody();
            os.write(response.getBytes());
            os.close();
        }
    }
}

共有1个答案

傅朗
2023-03-14

您的处理程序回调中有一个非常棒的参数httpexchange,它有一个方法getRequestURI(),它返回一个URI,它有一些方法可以获取

  • 主机
  • 端口
  • 已编码和解码的查询字符串

只是请注意,如果您的应用程序是反向代理的,那么您所拥有的只是代理服务器用来发出请求的内容(可能主机名、端口和协议会有所不同,但也可以对请求的其他部分进行一些转换)

 类似资料:
  • 我试图根据Spring的RequestMapping注释方法上存在的注释来实现一些逻辑。 所以我在我的方法中有一个实例,我想问Spring“给我一个方法,它将被调用来处理这个请求”,所以我可以使用反射API来询问我的注释是否存在或不存在,所以我可以更改处理。 有没有什么简单的方法可以从Spring MVC获取这些信息?

  • 我有一个Spring应用程序,在其中我声明了我的类,如下所示: 但是当我试图到达其中一个restendpoint时,我得到一个错误:并且它指定这两个方法为问题。我的印象是,如果我更改了请求参数,Spring不会通过以下帖子抱怨它们是相同的:http://www.coderanch.com/t/598675/Spring/handling-http-request-parameters但显然它仍然如

  • 本文向大家介绍使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法,包括了使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法的使用技巧和注意事项,需要的朋友参考一下        在安装nodejs时候,有时候我们会把它安装在d盘或别的盘时,经常会遇到npm环境变量没有配好,需要自己手动去配置。        在安装完nodejs后输入

  • Volley能否显示完整的HTTP请求/响应? 我已经使用了,它确实显示了一些日志消息,但没有显示HTTP流量。

  • 问题内容: 我正在尝试进行一些日志记录,以捕获进入我的应用程序的原始http请求。我的Java代码在SpringMVC控制器内部。我可以访问“ HttpServletRequest”对象。但是我找不到从中获取原始http请求流的方法。有读者,但只阅读帖子内容。我想要的是整个shebang,URL,标题,正文。是否有捷径可寻? 提前致谢。 问题答案: 不,servlet不提供要获取原始请求的api-