是否可以在 HttpServer.createContext 的处理程序方法中获取完整的 http 请求?
Is it possible to get the full http request inside the handler method of HttpServer.createContext?
我正在关注 this 示例代码,想知道是否可以在 处理程序方法中获取完整的 http GET 请求?
例如我有 http://localhost:8000/test?param1=value1¶m2=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();
}
}
}
你有那个很棒的参数 HttpExchange
in your handler callback, which has a method getRequestURI()
, that returns a URI
,它有获取方法
- 主持人
- 港口
- 编码和解码的查询字符串
请注意,如果您的应用程序是反向代理的,您所拥有的只是用于发出请求的代理服务器(主机名、端口和协议可能会有所不同,但也可以进行一些转换请求的其他部分)
我正在关注 this 示例代码,想知道是否可以在 处理程序方法中获取完整的 http GET 请求? 例如我有 http://localhost:8000/test?param1=value1¶m2=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();
}
}
}
你有那个很棒的参数 HttpExchange
in your handler callback, which has a method getRequestURI()
, that returns a URI
,它有获取方法
- 主持人
- 港口
- 编码和解码的查询字符串
请注意,如果您的应用程序是反向代理的,您所拥有的只是用于发出请求的代理服务器(主机名、端口和协议可能会有所不同,但也可以进行一些转换请求的其他部分)