下面是Java发起http请求的完整步骤记录的详细攻略:
1. 引入http请求依赖
Java中发起http请求需要引入相应的依赖,一般推荐使用Apache的HttpComponents组件,可以在pom.xml中加入以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>
2. 创建HttpRequest对象
在发起http请求之前,我们需要创建http请求的对象,这个对象是HttpRequest的实例,HttpComponents组件提供了多种类型的HttpRequest实现,根据请求类型不同可以选择不同的HttpRequest实现,以下是常见的HttpRequest实现:
- HttpGet:发送一个GET请求;
- HttpPost:发送一个POST请求;
- HttpPut:发送一个PUT请求;
- HttpDelete:发送一个DELETE请求;
- HttpHead:发送一个HEAD请求;
- HttpOptions:发送一个OPTIONS请求;
- HttpTrace:发送一个TRACE请求;
以上是HttpRequest的常见实现,根据实际需求选择即可,下面以HttpPost为例,创建一个HttpPost对象,设置url和请求参数:
HttpPost request = new HttpPost("https://example.com/api/v1/users");
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", "testuser"));
params.add(new BasicNameValuePair("password", "testpass"));
params.add(new BasicNameValuePair("email", "testuser@example.com"));
request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
以上代码中,我们创建了一个HttpPost对象,并设置了请求的url和请求头,接着创建了请求参数列表params,并将其设置为请求体的内容,最后使用setEntity()
方法将请求体设置到HttpPost对象中。
3. 发起http请求
在创建好Http请求对象后,我们可以使用HttpClient发起请求,以下是使用HttpClient执行请求的代码:
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
try {
response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity,Consts.UTF_8);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
以上代码中,我们首先创建了一个HttpClient的实例httpClient,然后使用httpClient的execute()方法执行请求,并获取响应对象response,接着从响应体中获取实体对象entity,并将其转化为字符串类型的响应结果result,最后打印响应结果。
示例说明1
现在我们假设我们将要访问某个网站的API接口,该接口需要将用户名和密码作为请求参数传递。我们可以按照以下步骤发起http请求:
首先创建一个HttpPost对象,并设置请求url和请求头:
HttpPost request = new HttpPost("https://example.com/api/v1/login");
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", "testuser"));
params.add(new BasicNameValuePair("password", "testpass"));
request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
然后使用HttpClient发起请求,获取响应:
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
try {
response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity,Consts.UTF_8);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
示例说明2
现在我们假设我们将要访问另一个API接口,该接口需要将请求参数以JSON格式传递。我们可以按照以下步骤发起http请求:
首先创建一个HttpPost对象,并设置请求url和请求头:
HttpPost request = new HttpPost("https://example.com/api/v1/users");
request.setHeader("Content-Type", "application/json");
StringEntity params = new StringEntity("{\"username\":\"testuser\",\"password\":\"testpass\",\"email\":\"testuser@example.com\"}", Consts.UTF_8);
request.setEntity(params);
然后使用HttpClient发起请求,获取响应:
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
try {
response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity,Consts.UTF_8);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
以上是关于Java发起http请求的完整步骤记录和示例说明,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java发起http请求的完整步骤记录 - Python技术站