问题描述
当访问要密码验证的网址的时候,通常会弹出一个对话框,指示用户输入用户名和密码,那么用Java代码去读取URL对应的内容时,如何设置好登陆凭证?
解决方案
URL url = new URL("http://user:password@10.10.12.72:8080/data/retrieve?rid=109000&pid=community");
URLConnection urlConnection = url.openConnection();
if (url.getUserInfo() != null) {
System.out.println(url.getUserInfo());
String basicAuth = "Basic " + new String(new Base64().encode(url.getUserInfo().getBytes()));
urlConnection.setRequestProperty("Authorization", basicAuth);
}
InputStream in = urlConnection.getInputStream();
Scanner cin = new Scanner(in);
while (cin.hasNextLine()) {
System.out.println(cin.nextLine());
}
More
当在Linux下,还可以用curl命令,设置认证过程
curl -X POST -vu android-bookmarks:123456 http://localhost:8080/oauth/token -H "Accept: application/json" -d "password=password&username=jlong&grant_type=password&scope=write&client_secret=123456&client_id=android-bookmarks"
curl -v POST http://127.0.0.1:8080/tags --data "tags=cows,dogs" -H "Authorization: Bearer 66953496-fc5b-44d0-9210-b0521863ffcb"