java简单调用api接口(调用api接口时会自动跳转到登录页面的解决方法)
java实现RestApi接口的调用本人在研究apache atlas时参考官方api文档进行api接口调用时遇到一个问题:浏览器调用接口会自动跳转到atlas的登录页面,如果不登录没办法调用api:经过学习了解,可以
·
java实现RestApi接口的调用,解决调用权限
本人在研究apache atlas时参考官方api文档进行api接口调用时遇到一个问题:浏览器调用接口会自动跳转到atlas的登录页面,如果不登录没办法调用api:
经过学习了解,可以在调用接口的时候在请求头设置一个key,这个key包含登录的账号和密码,具体方法如下:
private static String getAuthorization() {
BASE64Encoder encoder = new BASE64Encoder();
String auth = username + ":" + password;
String base64 = encoder.encode(auth.getBytes());
return "Basic " + base64;
}
其中,username和password是登录的账号和密码,BASE64Encoder 需要导入sun.misc.BASE64Decoder.jar,请自行下载导入,然后在请求头设置:
URL serverUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) serverUrl.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", getAuthorization());
这样就能调用api解决权限问题,完整的java代码如下:
package api_test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import Decoder.BASE64Encoder;
/**
* @Author:
* @Date: 2019/1/9 11:12
*/
public class HttpClientTest {
private static String getAuthorization() {
BASE64Encoder encoder = new BASE64Encoder();
String auth = "admin" + ":" + "admin";
String base64 = encoder.encode(auth.getBytes());
return "Basic " + base64;
}
public static void main(String[] args) throws Exception {
String url="http://192.168.3.64:21000/api/atlas/v2/lineage/6fa88134-ab3e-4db9-8907-947e4fc17b88";
URL serverUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) serverUrl.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", getAuthorization());
if (connection.getResponseCode() != 200) {
throw new RuntimeException(
"HTTP GET Request Failed with Error code : "+ connection.getResponseCode());
}
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader((connection.getInputStream())));
System.out.println("Output from Server: \n");
String output;
while ((output = responseBuffer.readLine()) != null) {
System.out.println(output);
}
connection.disconnect();
}
}
以上是通过java实现的,这里提一下postman测试,如图所示,输入用户名和密码 ,再进行测试
更多推荐
已为社区贡献1条内容
所有评论(0)