HTTP Post请求出错?

时间:2015-04-20 01:12:31

标签: ruby json post onedrive

我正在尝试为onedrive文件访问创建一个新的共享链接。

这就是我应该做的,

POST /drive/items/{item-id}/action.createLink
Content-Type: application/json

{
"type": "view"
}

我已在ruby中创建了一个帖子请求,如下所示,

require 'net/http'
require 'json'

uri = URI.parse("https://api.onedrive.com/v1.0")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new("https://api.onedrive.com/v1.0/drive/items/file.88e469b2d4c51142.88E469B2D4C51142!113/action.createLink")
req.content_type = "application/json"   
json = {:type=> "view"}.to_json   
req.body = json
response = http.request(req)
puts response.body
puts response

通过运行上面的代码我得到以下错误为JSON,

{
"error": {
"code": "invalidArgument",
"message": "ObjectHandle is Invalid",
"innererror": {
  "code": "badArgument",
  "innererror": {
    "code": "invalidObjectHandle",
    "innererror": {
      "code": "invalidResourceId"
    }
  }
}
}
}

我的第一印象是我使用错误的JSON值设置request.body如何克服此错误?

1 个答案:

答案 0 :(得分:1)

您提供的ID(file.88e469b2d4c51142.88E469B2D4C51142!113)不是此API的有效ID。它看起来很像从LiveConnect API获得的,并且与这个新API不兼容。如果您使用新的api获取id并使用相同的查询,则应该可以使用。