簡體   English   中英

使用 X-Checksum-Sha1 header 和 Apache 的 HTTP 客戶端在 Java 上傳到工件時出現 409 響應

[英]409 response when uploading to artifactory using X-Checksum-Sha1 header with Apache's HTTP client in Java

I am writing a Jenkins plugin in Java that uses the Apache HttpClient (org.apache.http.client.HttpClient) to upload artifacts to JFrog Artifactory. 作為該過程的一部分,我想向我上傳的工件添加校驗和。

據我了解,這可以使用 X-Checksum 標頭並在本地計算校驗和來完成。 但是,當我嘗試這樣做時,工件服務器會給我以下響應:

{
  "errors" : [ {
    "status" : 409,
    "message" : "Checksum policy 'LocalRepoChecksumPolicy: CLIENT' rejected the
                 artifact 'bluemix-ace-maven-local:test_build/4/log.txt'. Checksums info
                 ChecksumsInfo{
                   checksums={
                     SHA-1=ChecksumInfo{
                       type=SHA-1,
                       original='1a5bc1ae3c47e519f8bd69f90802c9fcf9fbddb3',
                       actual='c4c9da01b9e278d68a4c15bb95e41437799700ed'
                     },
                     MD5=ChecksumInfo{
                       type=MD5,
                       original='null',
                       actual='aa4023acbcb095cceb35ac82f9a913a8'
                     },
                     SHA-256=ChecksumInfo{
                       type=SHA-256,
                       original='null',
                       actual='5032a081754db0ce3f8b394a5215940e30456a77ea1e82765ceb595c8e0050da'
                     }
                   }
                }"
  } ]
}

我在本地計算的校驗和是 1a5bc1ae3c47e519f8bd69f90802c9fcf9fbddb3

我已經通過進入 bash 並對該文件執行 shasum 進行了驗證。 與上述相符。 因此,由於某種原因,artifactory 計算的 sha1 總和與我在本地計算的總和不同。 為什么會這樣?

這個問題似乎很相似: https://www.jfrog.com/jira/browse/RTFACT-8553

但他的解決方案對我沒有幫助。 我也嘗試過 MD5 和 SHA256。

我自己已經弄清楚了這個問題。 問題是我在Java中使用了multipart entity,也就是說上傳的文件中添加了headers等,會導致校驗和不同。 我切換到 BufferedHttpEntity,現在它正在工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM