通过API提交ruby gem失败,HTTP错误代码为422

时间:2010-09-19 09:58:35

标签: c# ruby http f# rubygems

我正在尝试将我的FAKE项目(http://github.com/forki/FAKE)从F#上传到RubyGems:

let mutable rubyGems = "http://rubygems.org/api/v1/gems"

let PushGem gemFileName authCode = 
    let client = new System.Net.WebClient()
    client.Headers.Add(Net.HttpRequestHeader.Authorization,authCode)

    logfn "Uploading gem %s to %s." gemFileName rubyGems
    client.UploadFile(rubyGems,gemFileName)
      |> System.Text.Encoding.ASCII.GetString
      |> printfn "%s"

它返回: 将gem。\ gems \ fake-1.42.9.0.gem上传到http://rubygems.org/api/v1/gems。 远程服务器返回错误:(422)Unprocessable Entity。

宝石似乎没问题,因为我可以安装它。 API文档可以在https://rubygems.org/pages/api_docs找到。

有什么想法吗?

此致   斯特芬

更新

curl --data-binary fake-1.42.11.0.gem -H'授权:.....'http://rubygems.org/api/v1/gems

给出:

  

RubyGems.org无法处理此gem。    请尝试重建并在本地安装以确保它有效。

但是gem push fake-1.42.11.0.gem似乎有效。

此致   斯特芬

1 个答案:

答案 0 :(得分:1)

如果使用curl提交文件(在api示例中给出)是否正常工作?如果是 - 您应该比较来自curl和WebClient.UploadFile的请求。