下面是Java发送HTTP的GET、POST请求实现代码的完整攻略,包含两条示例说明。
准备工作
在使用Java发送HTTP请求前,需要导入相关包和类库。Java提供了两种发送HTTP请求的方式:URLConnection和HttpClient。我们可以根据实际的需求选择使用不同的方法。
1. 使用URLConnection发送HTTP请求
使用URLConnection发送HTTP请求,需要导入以下包:
import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
其中,URL
类用于定义URL地址,URLConnection
用于打开URL连接并发送请求,BufferedReader
用于读取返回的数据。
2. 使用HttpClient发送HTTP请求
使用HttpClient发送HTTP请求,需要导入Apache HttpClient libraries,可通过gradle或maven等依赖管理工具导入依赖。在Java9之后,HttpClient包被纳入到JDK核心库中,因此也可以直接使用。
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
其中,HttpClient
是Apache的开源项目,用于发送HTTP请求。HttpClientBuilder
则用于创建HttpClient对象。HttpGet
是Http请求方法类,用于发送get方法请求。同时,还有HttpPost类,用于发送post方法请求。
发送GET请求
使用URLConnection
首先,我们需要定义请求的URL和请求方式,然后打开URLConnection对象,并设置请求头和请求体,最后读取返回的数据。
String urlStr = "http://www.example.com/getData?key=value";
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.setRequestProperty("Accept-Charset", "utf-8");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
其中,User-Agent
和Accept-Charset
是请求头,表示浏览器的信息和编码方式。getInputStream()
方法用于获取数据流。reader.readLine()
方法用于读取数据流中的每一行数据,直到为空时结束。
使用HttpClient
使用HttpClient发送GET请求,也需要先定义请求的URL和请求方式,然后创建HttpClient对象,并创建HttpGet对象,设置请求头,发送请求,最后读取返回的数据流。
String urlStr = "http://www.example.com/getData?key=value";
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(urlStr);
httpGet.addHeader("User-Agent", "Mozilla/5.0");
httpGet.addHeader("Accept-Charset", "utf-8");
HttpResponse response = httpClient.execute(httpGet);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
发送POST请求
使用URLConnection
使用URLConnection发送POST请求,需要先定义请求的URL和请求方式,然后打开URLConnection对象,并设置请求头和请求体。
String urlStr = "http://www.example.com/submitData";
URL url = new URL(urlStr);
String data = "key1=value1&key2=value2";
URLConnection conn = url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(data.getBytes().length));
conn.setDoOutput(true);
conn.getOutputStream().write(data.getBytes());
其中,setRequestMethod()
用于设置请求方式为POST,setDoOutput(true)
用于设置URLConnection对象的输出属性为true,表示可对请求进行输出。getOutputStream()
方法用于获取URLConnection的输出流,以便向连接中写入请求体。
使用HttpClient
使用HttpClient发送POST请求也需要先定义请求的URL和请求方式,然后创建HttpClient对象和HttpPost对象,设置请求头和请求体,最后发送请求并读取返回的数据流。
String urlStr = "http://www.example.com/submitData";
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(urlStr);
String data = "key1=value1&key2=value2";
StringEntity entity = new StringEntity(data, Charset.forName("UTF-8"));
entity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(entity);
httpPost.addHeader("User-Agent", "Mozilla/5.0");
httpPost.addHeader("Accept-Charset", "utf-8");
HttpResponse response = httpClient.execute(httpPost);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
其中,setEntity()
方法用于设置HttpEntity对象,表示请求体。addHeader()
方法用于设置请求头。ContentType
用于设置编码方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java发送http的get、post请求实现代码 - Python技术站