一、JAVA发送POST请求
在JAVA中发送POST请求需要用到HttpURLConnection类,可以通过该类来建立一个HTTP连接,并发送POST请求、接收响应。
请求示例代码:
public static String sendPost(String url, String param) throws Exception { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", "Mozilla/5.0"); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); String urlParameters = param; con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); }
上面的代码使用URL和HttpURLConnection来发送POST请求,并返回服务器的响应结果。下面将详细解释每一行代码的作用:
1. URL obj = new URL(url);
创建一个URL对象,用于指定要连接的URL地址。
2. HttpURLConnection con = (HttpURLConnection) obj.openConnection();
打开连接。通过URL.openConnection()方法获取到HttpURLConnection对象后,需要将其强制类型转换为HttpURLConnection类型,以便使用更多的HTTP协议相关API。
3. con.setRequestMethod("POST");
设置HTTP请求的方法为POST,这里还可以使用GET、PUT、DELETE等其他请求方式。
4. con.setRequestProperty("User-Agent", "Mozilla/5.0");
设置HTTP请求头中的属性,这里将User-Agent设置为Mozilla/5.0,可以伪装成浏览器请求。还可以设置其他请求头属性,如Accept、Content-Type等。
5. String urlParameters = param;
设置POST请求参数,这里使用String类型参数,根据需要可以使用其他类型的参数。
6. con.setDoOutput(true);
设置该请求是输出数据,用于POST请求的参数传递。
7. DataOutputStream wr = new DataOutputStream(con.getOutputStream());
创建DataOutputStream对象,用于向服务器写入POST参数。
8. wr.writeBytes(urlParameters);
向服务器写入POST参数。
9. wr.flush();
刷新输出流,确保所有信息被写入。
10. wr.close();
关闭输出流,释放资源。
11. BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
创建BufferedReader对象,用于读取服务器的响应信息。
12. String inputLine;
定义用于存储读取服务器响应数据的变量。
13. StringBuffer response = new StringBuffer();
创建StringBuffer对象,用于存储服务器响应数据。
14. while ((inputLine = in.readLine()) != null) {response.append(inputLine);}
循环读取服务器响应的每一行数据,并将其添加到StringBuffer对象中。
15. in.close();
关闭BufferedReader对象,释放资源。
16. return response.toString();
返回服务器响应数据。
二、JAVA POST请求设置请求头
在JAVA发送POST请求时,可以设置HTTP请求头,在请求头中添加一些需要的属性或信息。
请求示例代码:
public static String sendPost(String url, String param, Mapheaders) throws Exception { URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", "Mozilla/5.0"); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); for (Map.Entry entry : headers.entrySet()) { con.setRequestProperty(entry.getKey(), entry.getValue()); } String urlParameters = param; con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); }
上面的示例代码在发送POST请求时,添加了headers参数用于设置HTTP请求头,其中headers是一个Map结构,用于存储HTTP请求所需要的其他头部信息。这样就可以在发送HTTP请求时自定义请求头,实现更加灵活的控制。
三、JAVA发送HTTP请求
JAVA发送HTTP请求的方式不止一种,常用的方式还包括HttpClient和OkHttp两种框架。HttpClient是Apache的一个HTTP客户端库,OkHttp是一个高效的HTTP客户端,性能优秀,同时支持HTTP/2协议,并支持Android平台。
四、小结
本文从JAVA发送POST请求、JAVA POST请求设置请求头、JAVA发送HTTP请求三个方面对JAVA发送POST请求带参数做了详细的阐述,对于需要发送HTTP请求的开发人员可以根据实际需要选择适合自己的方式。Java中发送HTTP请求的方式也是非常多的,需要根据自己的需求选择不同的方式。最后,本文提供了详细的代码示例,开发人员可以根据代码示例进行开发,提升开发效率。