2015-04-20 11 views
0

Я пытаюсь создать новую ссылку для доступа к файлу onedrive.Ошибка при отправке запроса HTTP?

Это то, что я должен делать,

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

{ 
"type": "view" 
} 

Я создал пост запрос в рубин, как следовать,

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" 
    } 
    } 
} 
} 
} 

Мое первое впечатление, что я устанавливаю request.body с неправильным значением o f JSON как преодолеть эту ошибку?

+1

'invalidResourceId' предполагает, что ваш идентификатор элемента не существует на сервере. – Satya

ответ

1

Предоставленный вами id (file.88e469b2d4c51142.88E469B2D4C51142! 113) недействительный идентификатор для этого API. Он выглядит подозрительно, как тот, который получен из API LiveConnect, и несовместимы с этим новым API. Если вы получите идентификатор, используя новый api, и используйте его с тем же запросом, он должен работать.

+0

Итак, API-интерфейс Live Connect не будет работать в будущем! или это просто несовместимо с новым API – Rocky29