我正在尝试阅读https://d3ca01230439ce08d4aab0c61810af23:[email protected]/recordings.atom
使用罗马,但给我错误
INFO: Illegal access: this web application instance has been stopped already. Could not load org.bouncycastle.jcajce.provider.symmetric.AES$ECB. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
和
Server returned HTTP response code: 401 for URL: https://d3ca01230439ce08d4aab0c61810af23:[email protected]/recordings.atom .
我正在做这个
URL url = new URL("https://d3ca01230439ce08d4aab0c61810af23:[email protected]/recordings.atom ");
try {
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(url));
System.out.println("Feed Author:"+feed.getAuthor());
for(Object entries: feed.getEntries()){
SyndEntry entry = (SyndEntry) entries;
System.out.println("title :"+entry.getTitle());
System.out.println("description : "+entry.getDescription());
}
} catch (IllegalArgumentException | FeedException | IOException e) {
e.printStackTrace();
}
我是否需要将用户名密码放在某处?
更新
我已经做到了
URL url = new URL("https://d3ca01230439ce08d4aab0c61810af23:[email protected]/recordings.atom");
HttpURLConnection httpcon = (HttpURLConnection)url.openConnection();
String encoding = new sun.misc.BASE64Encoder().encode("username:pass".getBytes());
httpcon.setRequestProperty ("Authorization", "Basic " + encoding);
最佳答案
当我从浏览器中访问该URL时,它会要求进行基本身份验证。您可以使用ROME做到这一点:
URL feedUrl = new URL(feed)
HttpURLConnection httpcon = (HttpURLConnection)feedUrl.openConnection();
String encoding = new sun.misc.BASE64Encoder().encode("username:password".getBytes());
httpcon.setRequestProperty ("Authorization", "Basic " + encoding);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(httpcon));
您可能不应该使用sun.misc.BASE64Encoder。而是在某个地方找到另一个。
发件人:http://cephas.net/blog/2005/02/09/retrieving-an-rss-feed-protected-by-basic-authentication-using-rome/