首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Powershell获得Github发布资产的二进制版本?

如何使用Powershell获得Github发布资产的二进制版本?
EN

Stack Overflow用户
提问于 2015-09-25 21:13:10
回答 1查看 423关注 0票数 1

我正在跟踪来自GitHub发布的文档,但是我得到的所有返回都是资产内容。

下面是我的powershell脚本:

代码语言:javascript
复制
$gitHubRepository = "<repo>"
$gitHubUsername = "<username>"
$gitHubApiKey = "<apikey>"

# Locate Latest GitHub Release
$releaseParams = @{
    Uri = "https://api.github.com/repos/$gitHubUsername/$gitHubRepository/releases";
    Method = 'GET';
    Headers = @{
        Authorization = 'Basic ' + [Convert]::ToBase64String(
            [Text.Encoding]::ASCII.GetBytes($gitHubApiKey + ":x-oauth-basic")
        );
    }
    ContentType = 'application/json';
    Body = (ConvertTo-Json $releaseData -Compress)
}

$result = Invoke-RestMethod @releaseParams

$tag = $result.tag_name[0]
Write-Host "Release $tag Found."

$asset = $result.assets[0].url
$ZipFile = $result.assets[0].name
$asset

$releaseAssetParams = @{
    Uri = $asset;
    Method = 'GET';
    Headers = @{
        Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($gitHubApiKey + ":x-oauth-basic"));
    }
    ContentType = 'application/octet-stream';
}

Invoke-RestMethod @releaseAssetParams -OutFile $ZipFile

执行此脚本(变量设置正确),输出资产内容,而不是预期的二进制(zip)文件。

内容类型没有被识别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 08:52:05

您需要在一个application/octet-stream请求头中指定Accept,而不是Content-Type请求头,因为您想告诉服务器您想要接受什么,而不是要发送什么。

因此,您需要发送这样的标题:

代码语言:javascript
复制
Accept: application/octet-stream

而不是

代码语言:javascript
复制
Content-Type: application/octet-stream

API的响应将是对具有实际资产的URL的重定向,因此您需要发出另一个请求(这是预期的行为)。如果你遇到问题,让我们知道

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32790739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档