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测试,如图所示,输入用户名和密码 ,再进行测试
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐