java - github上的404发布使用java下载
问题描述
为什么我在这里得到一个 404,同时下载一个私人回购发布工件。
URL url = new URL("https://github.com/anandchakru/private_repo/releases/download/rel_v1/artif-3.0.jar?access_token=myaccesstoken");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
System.out.println(connection.getResponseCode()); //404
而不是在这里,同时下载公共回购发布工件?
URL url = new URL("https://github.com/anandchakru/fr/releases/download/1.0/fr.jar");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
System.out.println(connection.getResponseCode()); //200
注意:我可以下载https://github.com/anandchakru/private_repo/releases/download/rel_v1/artif-3.0.jar?access_token=myaccesstoken
(在隐身/provate_mode 浏览器中)。
解决方案
结束执行以下操作:
- 添加标题
Accept: application/json
- 点击
https://api.github.com/repos/anandchakru/private_repo/releases/assets/<asset_id>?access_token=myaccesstoken
获取神器。
代码:
URL url = new URL("https://api.github.com/repos/anandchakru/private_repo/releases/assets/<asset_id>?access_token=<token>");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestProperty("Accept", "application/octet-stream");
ReadableByteChannel uChannel = Channels.newChannel(connection.getInputStream());
FileOutputStream foStream = new FileOutputStream("C:/Users/username/artif-3.0.jar");
FileChannel fChannel = foStream.getChannel();
fChannel.transferFrom(uChannel, 0, Long.MAX_VALUE);
uChannel.close();
foStream.close();
fChannel.close();
System.out.println(connection.getResponseCode());
不要忘记关闭 foStream 和 uChannel。
推荐阅读
- c++ - `reinterpret_cast` 实际上对任何事情都有好处吗?
- python - 我想裁剪一个深度框架并获得一个裁剪的深度框架,以便我可以在裁剪的深度框架上应用一些方法
- android - 根检查将某些 android 非设备识别为已根 - Dotfuscator
- python - 在 aci 中部署机器学习模型时出现错误
- priority-queue - AnyLogic 中来自 2 个源的优先级队列
- cypress - 如何在赛普拉斯中使用 sheetJS 更新现有 Excel 上的单元格值
- android - 删除 sqllite 中的记录是一个一个或一个列表更快
- asp.net - 在 cloudflare 中创建子域,添加托管在 IIS 上的新网站返回 HTTP 404 错误
- sql - Oracle Apex 交互式网格根据条件禁用 ROW
- qnamaker - 导出的 QnA maker 知识库上的 BF CLI 解析错误