【问题标题】:Sending a value from an HTTP client to an HTTP server using POST request, coding in Java使用 POST 请求将值从 HTTP 客户端发送到 HTTP 服务器,用 Java 编码
【发布时间】:2015-10-21 06:54:37
【问题描述】:

我不想做任何复杂的事情:我正在尝试做一个从客户端到服务器的尽可能简单的传输。

我知道使用 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 请求? (即接受来自客户端的值)。

【问题讨论】:

  • 我很困惑。您谈到从客户端发送请求,但现在您发布有关某些嵌入式服务器的代码。我希望您发布您已经修改了 6-7 小时的客户端应用程序的代码。困惑#2:如果你追求的是简单,那你到底为什么要自己动手?使用 Jetty 作为嵌入式服务器,使用 Apache HttpClient 发送请求。成百上千的可用示例可供您使用。
  • 假设 HttpServer 在所需端口上启动并运行,你可以试试这个代码吗? stackoverflow.com/questions/32779226/…
  • Gimby - 我也考虑过发布客户端程序,但我相对有信心知道它是如何工作的并且我做得对。服务器是我不知道如何进行的地方。关于#2,我只是认为自己制作一些东西会更快/更容易,而不必导入/下载一堆东西——这实际上会更容易吗? @ravindra:该代码与我的客户端程序中的代码非常相似。我正在使用输出流通过连接发送数据。我只是不知道如何在服务器端接受它——我将如何为此写作。
  • 我没有接触过 HttpServer。但我的代码 sn-p 适用于任何类型的 http url。

标签: java rest http client-server


【解决方案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";

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

【讨论】:

  • 太棒了。只需使用 1) 修复前的代码 2) 修复后的代码更新答案
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
相关资源
最近更新 更多