一段现有的Java代码被破坏了。它用于以原始格式从Github中提取静态文件。出于某种原因,URL会在最后使用随机令牌重定向到另一个URL。我已经指定HttpURLConnection跟随重定向,但它似乎无法正常工作。这是代码:
HttpURLConnection.setFollowRedirects(true);
URL urlClass = new URL(url);
HttpURLConnection uc = (HttpURLConnection)urlClass.openConnection();
String userpass = githubUserName + ":" + githubPassword;
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
uc.setRequestProperty("Authorization", basicAuth);
uc.setInstanceFollowRedirects(true);
String fileContent = IOUtils.toString(uc.getInputStream());
网址如下所示: https://github.com/project/raw/master/filename.json 重定向后:https://github.com/raw/project/master/filename.json?token=somerandomlettershere
有趣的是,Web浏览器可以自动处理重定向,我可以看到那里的内容,而HttpURLConnection只返回404。
答案 0 :(得分:0)
更新
通过使用Github Java API(https://github.com/eclipse/egit-github/tree/master/org.eclipse.egit.github.core)重构原始代码解决了这个问题,这样就不需要通过完整的URL访问文件了,这导致了重定向问题,而是提供了存储库和文件名。