Java HttpURLConnection示例– Java HTTP请求GET,POST
java.net包中的HttpURLConnection类可用于以编程方式发送Java HTTP请求。
今天,我们将学习如何在Java程序中使用HttpURLConnection发送GET和POST请求,然后打印响应。
Java HTTP请求
对于我们的HttpURLConnection示例,我正在使用Spring MVC教程中的示例项目,因为它具有GET和POST HTTP方法的URL。
以下是此Web应用程序的图像,我已将其部署在本地tomcat服务器上。
Java HTTP GET请求
Java HTTP GET登录页面请求
Java HTTP POST请求
对于Java HTTP GET请求,我们在浏览器URL本身中拥有所有信息。
因此,从以上图像中,我们知道我们具有以下GET请求URL。
- https://localhost:9090/SpringMVCExample /
- https://localhost:9090/SpringMVCExample /登录
上面的URL没有任何参数,但是我们知道在HTTP GET请求中,参数本身就是URL的一部分,因此,例如,如果我们必须发送一个名为userName且值为hyman的参数,那么这些URL就会像下面这样。
- https://localhost:9090/SpringMVCExample?userName = hyman
- https://localhost:9090/SpringMVCExample/login?userName = hyman&pwd = apple123 –用于多个参数
如果我们知道POST URL及其所需的参数,那么它很棒,但是在这种情况下,我们将从登录表单源中找出它。
下面是在任何浏览器中查看登录页面源代码时获得HTML代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Login Page</title> </head> <body> <form action="home" method="post"> <input type="text" name="userName"><br> <input type="submit" value="Login"> </form> </body> </html>
如预期的那样,查看源代码中的form方法。
现在看到该操作是" home",因此POST URL将是https://localhost:9090/SpringMVCExample/home。
现在检查表格中的不同元素,从上面的表格中我们可以推断出我们需要发送一个名称为userName且类型为String的POST参数。
因此,现在我们已经完整了解了GET和POST请求,并且可以继续进行Java HTTP Request示例程序。
下面是使用HttpURLConnection类发送Java HTTP请求所需遵循的步骤。
从GET/POST URL字符串创建URL对象。
在返回" HttpURLConnection"实例的URL对象上调用openConnection()方法
在" HttpURLConnection"实例中设置请求方法,默认值为GET。
在
HttpURLConnection实例上调用setRequestProperty()方法来设置请求标头值,例如" User-Agent"和" Accept-Language"等。我们可以调用
getResponseCode()来获取响应的HTTP代码。
这样,我们就知道请求是否已成功处理,或者是否抛出任何HTTP错误消息。对于GET,我们可以简单地使用Reader和InputStream读取响应并进行相应处理。
对于POST,在读取响应之前,我们需要从HttpURLConnection实例获取OutputStream并将POST参数写入其中。
HttpURLConnection示例
基于上述步骤,以下是示例程序,该示例程序显示了使用HttpURLConnection来发送Java GET和POST请求。
HttpURLConnectionExample.java代码:
package com.theitroad.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpURLConnectionExample {
private static final String USER_AGENT = "Mozilla/5.0";
private static final String GET_URL = "https://localhost:9090/SpringMVCExample";
private static final String POST_URL = "https://localhost:9090/SpringMVCExample/home";
private static final String POST_PA内存S = "userName=hyman";
public static void main(String[] args) throws IOException {
sendGET();
System.out.println("GET DONE");
sendPOST();
System.out.println("POST DONE");
}
private static void sendGET() throws IOException {
URL obj = new URL(GET_URL);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
System.out.println("GET Response Code :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) { //success
BufferedReader in = new BufferedReader(new InputStreamReader(
con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
} else {
System.out.println("GET request not worked");
}
}
private static void sendPOST() throws IOException {
URL obj = new URL(POST_URL);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
//For POST only - START
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(POST_PA内存S.getBytes());
os.flush();
os.close();
//For POST only - END
int responseCode = con.getResponseCode();
System.out.println("POST Response Code :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) { //success
BufferedReader in = new BufferedReader(new InputStreamReader(
con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
} else {
System.out.println("POST request not worked");
}
}
}
当我们执行上面的程序时,我们得到下面的响应。
GET Response Code :: 200 <html><head> <title>Home</title></head><body><h1> Hello world! </h1><P> The time on the server is March 6, 2014 9:31:04 PM IST. </P></body></html> GET DONE POST Response Code :: 200 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>User Home Page</title></head><body><h3>Hi hyman</h3></body></html> POST DONE
只需将其与浏览器的HTTP响应进行比较,就会发现它是相同的。
您还可以将响应保存到任何HTML文件中,然后将其打开以直观地比较响应。

