#ruby-on-rails #ruby #rest #curl #http-status-code-415
#ruby-on-rails #ruby #rest #curl #http-status-code-415
Вопрос:
У меня есть вызов cURL, который работает, но когда я перевожу его с помощью Ruby Gem rest-client, я получаю:
RestClient::UnsupportedMediaType: 415 Неподдерживаемый тип носителя
Вот cURL, который я использовал, который работал:
curl
-X POST
-H "Content-Type:application/json"
-H "Authorization: Bearer MY_TOKEN"
-H "Amazon-Advertising-API-Scope: MY_SCOPE"
-d '{"campaignType":"sponsoredProducts","reportDate":"20161013","metrics":"impressions,clicks,cost"}'
https://advertising-api.amazon.com/v1/productAds/report
Вот Ruby, который возвращает статус HTTP 415:
yesterday = Date.today - 1
RestClient::Request.execute(
method: :post,
url: 'https://advertising-api.amazon.com/v1/productAds/report',
headers:
{
'Content-Type' => 'application/json',
'Authorization' => "Bearer #{ENV['AD_ACCESS_TOKEN']}",
'Amazon-Advertising-API-Scope' => ENV['AD_PROFILE_ID']
},
payload:
{
'campaignType' => 'sponsoredProducts',
'reportDate' => "#{yesterday.year}#{yesterday.month}#{yesterday.day}",
'metrics' => 'impressions,clicks,cost'
}
)
Ответ №1:
Хэш полезной нагрузки необходимо было преобразовать в JSON.
...
payload:
{
...
}.to_json
...