当通过Java程序调用Restful接口时,可以使用以下三种常用的方法:
1. 使用Java内置的HttpURLConnection类
HttpURLConnection是Java内置的一个可用于发送HTTP/HTTPS请求的类。让我们来看看如何使用它来调用Restful接口:
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Base64;
public class RestfulConnectionExample {
public static void main(String[] args) {
try {
// 接口地址
String restUrl = "https://example.com/api/v1/getData";
// 请求方法
String requestMethod = "GET";
// 添加身份验证头部
String authString = "admin:password";
byte[] authBytes = authString.getBytes("UTF-8");
String encodedAuthString = Base64.getEncoder().encodeToString(authBytes);
// 创建连接
URL url = new URL(restUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(requestMethod);
connection.setRequestProperty("Authorization", "Basic " + encodedAuthString);
// 读取响应
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 输出响应
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上示例代码演示了如何使用Java内置的HttpURLConnection类调用Restful接口。在代码中,我们首先定义了要连接的Restful接口地址和请求方法。然后,我们添加了HTTP身份验证头部,以便请求可以被认证。接着,我们创建连接,并从连接中读取响应。最后,我们输出读取到的响应。
2. 使用Apache HttpClient库
Apache HttpClient是Apache软件基金会的一个Java HTTP客户端库。它提供了一组易于使用的API,用于发送HTTP/HTTPS请求并处理响应。下面是一个使用Apache HttpClient库的示例代码:
import org.apache.http.client.methods.HttpGet;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.auth.AuthScope;
public class RestfulHttpClientExample {
public static void main(String[] args) {
try {
// 接口地址
String restUrl = "https://example.com/api/v1/getData";
// 添加身份验证
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("admin", "password");
provider.setCredentials(AuthScope.ANY, credentials);
// 创建HttpClient并构造请求
HttpClientBuilder builder = HttpClientBuilder.create().setDefaultCredentialsProvider(provider);
HttpGet request = new HttpGet(restUrl);
// 执行请求并读取响应
HttpResponse response = builder.build().execute(request);
String responseBody = EntityUtils.toString(response.getEntity());
// 输出响应
System.out.println(responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在以上示例代码中,我们使用了Apache HttpClient库来调用Restful接口。我们首先定义了要连接的接口地址,然后添加了HTTP身份验证。接着,我们创建了HttpClient实例,并用构造的请求对象执行请求。最后,我们读取响应,并输出读取到的响应。
3. 使用Spring RestTemplate模板
Spring RestTemplate是一种极为方便的Rest客户端工具。它可以轻松地使用HTTP GET、POST、PUT、DELETE等方法调用Restful接口。下面是一个使用Spring RestTemplate模板的示例代码:
import org.springframework.web.client.RestTemplate;
import org.springframework.http.*;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.StringHttpMessageConverter;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class RestfulRestTemplateExample {
public static void main(String[] args) {
try {
// 接口地址
String restUrl = "https://example.com/api/v1/getData";
// 添加身份验证
String authString = "admin:password";
byte[] authBytes = authString.getBytes(StandardCharsets.UTF_8);
String encodedAuthString = Base64.getEncoder().encodeToString(authBytes);
// 创建RestTemplate实例,并设置请求工厂和字符编码
RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
restTemplate.setRequestFactory(requestFactory);
restTemplate.getMessageConverters().add(new StringHttpMessageConverter(StandardCharsets.UTF_8));
// 构造请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "Basic " + encodedAuthString);
// 构造请求对象
HttpEntity<String> request = new HttpEntity<String>(headers);
// 执行请求并获取响应
ResponseEntity<String> response = restTemplate.exchange(restUrl, HttpMethod.GET, request, String.class);
// 输出响应
System.out.println(response.getBody());
} catch (Exception e) {
e.printStackTrace();
}
}
}
在以上示例代码中,我们使用了Spring RestTemplate模板调用Restful接口。我们首先定义了要连接的接口地址,然后添加HTTP身份验证并创建RestTemplate实例。接着,我们构造了请求头和请求对象,并执行了请求,最后读取响应并输出它。
这三种方法都是常用的Java调用Restful接口的方法。选择哪一个方法,要根据自己的需求和开发环境而定。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java调用Restful接口的三种方法 - Python技术站