Как преобразовать запрос CURL в Ruby Gem HTTPClient - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь преобразовать этот запрос CURL:

curl \
  -F 'slideshow_spec={ 
    "images_urls": [ 
      "<IMAGE_URL_1>", 
      "<IMAGE_URL_2>", 
      "<IMAGE_URL_3>" 
    ], 
    "duration_ms": 2000, 
    "transition_ms": 200 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://google.com

В запрос HTTPClient, но все мои попытки приводят к 400 неверным запросам.Вот что я попробовал:

  payload = {
        "images_urls": [
          "https://cdn-m2.esoftsystems.com/10100028/TAASTRUP%40DANBOLIG.DK/10106239925/160596797/BEST_FIT/1542/1024/IMG_5511.jpg",
          "https://cdn-m2.esoftsystems.com/10100028/TAASTRUP%40DANBOLIG.DK/10106239925/160596797/BEST_FIT/1542/1024/IMG_5511.jpg",
          "https://cdn-m2.esoftsystems.com/10100028/TAASTRUP%40DANBOLIG.DK/10106239925/160596797/BEST_FIT/1542/1024/IMG_5511.jpg"
        ],
        "duration_ms": 2000,
        "transition_ms": 200
      }

  response = RestClient.post url, {slideshow_spec: payload.to_json, multipart: true, access_token: access_token}

Есть идеи?

1 Ответ

0 голосов
/ 06 февраля 2019

Ваши запросы не эквивалентны.Я предполагаю, что вы смешиваете форматы JSON, Multipart и x-www-form-urlencoded.

RestClient поддерживает все три формата (примеры взяты из https://github.com/rest-client/rest-client/blob/master/README.md)

# POST JSON
RestClient.post "http://example.com/resource", {'x' => 1}.to_json, {content_type: :json, accept: :json}

# POST Multipart
# Usually not needed if you don't want to upload a file
RestClient.post '/data', {:foo => 'bar', :multipart => true}

# POST x-www-form-urlencoded
RestClient.post('https://httpbin.org/post', {foo: 'bar', baz: 'qux'})

Похоже на ваш локонВ примере используется application/x-www-form-urlencoded, в то время как в вашем образце Ruby используется multipart/form-data.

. Для получения справочной информации установите флажок

...