如果我想使用Nexus API将工件上传到存储库,有人知道请求正文是什么样吗?
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("admin123:password123"))
$header = @{authorization = "Basic $token" }
$body = @{
'raw.dictionary' = '/TestArtifact/Prod/'
'raw.asset1' = 'c:\temp\lenovo.zip'
'raw.asset1.filename' = 'lenovo.zip'
} | Convertto-Json
Invoke-RestMethod -Method POST -Uri 'http://xx.xx.xxx.xxx:8081/service/rest/v1/components?repository=TestRepo' -ContentType 'application/json'-Body $body -Headers $header
我得到'Invoke-RestMethod:响应状态代码未指示成功:415(不受支持的媒体类型)'
让我们尝试解决这个问题。
该命令看起来像您正在尝试执行的是
curl -v -u admin:admin123 -X POST 'http://localhost:8081/service/rest/v1/components?repository=maven-releases' -F maven2.groupId=com.google.guava -F maven2.artifactId=guava -F maven2.version=24.0-jre -F [email protected] -F maven2.asset1.extension=jar -F [email protected] -F maven2.asset2.classifier=sources -F maven2.asset2.extension=jar
似乎我们遇到的主要问题是您没有将文件转换为字节。
-F @[FileName]
是二进制文件
唯一需要做的更改就是更改
'raw.asset1' = 'c:\temp\lenovo.zip'
到
'raw.asset1' = [System.IO.File]::ReadAllBytes("c:\temp\lenovo.zip")