首页 > 解决方案 > Java 不发送 HTTP POST 请求

问题描述

我正在实现一些简单的 java 类,以便发送HTTP带有方法的请求,POST以及另一个 java 类以接收它。当我通过浏览器(Chrome)或应用程序(在这种情况下我使用 Postman)发出请求
时,服务器工作正常,但是当我使用 java 发送请求时它最终会出现问题!POSTHTTP

我的发送HTTP类是“Sender.java”,包含以下代码段:

String url = "http://localhost:8082/";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

// Setting basic post request
con.setRequestMethod("POST");       
//con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
//con.setRequestProperty("Content-Type","text/plain");

// Send post request
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write("Just Some Text".getBytes("UTF-8"));
os.flush();
os.close();
//connect to the Server(resides at Server.java)
con.connect();

我已经注释了一些代码行设置标题,例如“Accept-Language”和“Content-Type”,因为我不知道 Java 程序是否需要这些标题?

服务器是另一个名为“Server.java”的 java 程序。这是与读取HTTPSender.java 发出的请求相关的片段(如果需要)。

int servPort = 8082;
// Create a server socket to accept HTTP client connection requests
HttpServer server = HttpServer.create(new InetSocketAddress(servPort), 0);
System.out.println("server started at " + servPort);

server.createContext("/", new PostHandler());//PostHandler implements HttpHandler
server.setExecutor(null);

server.start();

我想要的只是HTTP使用该方法发送一个纯文本作为我的请求的正文Post。我已经阅读了很多网站,甚至在这个网站上的相关问题。但是还是不行。换句话说,每当我HTTP从“Sender.java”创建一个请求时,“Server.java”上什么都不会出现。我只想知道我的片段有什么问题,我应该如何解决?

标签: javahttppost

解决方案


我对此进行了测试,并且可以正常工作:

//Sender.java
String url = "http://localhost:8082/";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();


con.setRequestMethod("POST");       
con.setDoOutput(true);

OutputStream os = con.getOutputStream();
os.write("Just Some Text".getBytes("UTF-8"));
os.flush();

int httpResult = con.getResponseCode(); 
con.disconnect();

如您所见,连接不是必需的。关键线是

int httpResult = con.getResponseCode();


推荐阅读