使用POST请求从HTTP客户端向HTTP服务器发送值,使用Java进行编码

时间:2015-10-21 06:54:38

标签: java rest http client-server

我不打算做任何复杂的事情:我试图从客户端到服务器进行简单的尽可能简单的传输。

我知道使用HTTP客户端/服务器的方法是使用POST。

我一直试图让一个简单的POST请求现在工作6到7个小时,并且无处可去。 所以我认为现在是时候停止尝试自己弄清楚了并在这里发布一个问题:使用POST请求将值从HTTP客户端传输到使用Java编码的HTTP服务器的最简单方法是什么?

我想我了解如何从客户端发送数据,但我无法找到解释如何在服务器上接收数据的地方。

这是我在我的服务器程序中使用的(通过教程完成)只是为了测试来自客户端的GET请求(它有效):

    public static void main(String args[]) throws IOException {
    HttpServer server = HttpServer.create(new InetSocketAddress(8000),0);
    server.createContext("/test", new testHandler());
    server.setExecutor(null);
    server.start();
}
static class testHandler implements HttpHandler {

    @Override
    public void handle(HttpExchange t) throws IOException {
        String test = "Hello World!";
        t.sendResponseHeaders(200,test.length());
        OutputStream stream = t.getResponseBody();
        stream.write(test.getBytes());
        stream.close();
    }

如何修改上述代码以容纳POST请求? (即接受客户的价值)。

1 个答案:

答案 0 :(得分:1)

我明白了!

我所要做的就是在我的HttpExchange对象的输入流上使用BufferedReader(因为我在客户端POST请求中通过输出流发送了一个值)。

我刚刚将其添加到我上面提到的服务器代码中:

BufferedReader input = new BufferedReader(new InputStreamReader(t.getRequestBody()));
        int a = input.read();
        String test = "You sent the value "+a+" to the server";

此消息现在完全打印回我的客户端程序。