Попытка отправить запрос в Канаду опубликовать API с XML-тела - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь отправить запрос на публикацию в api рейтинг рейтинга Канады, используя rest-client, вот так (для расчета доставки):

xml_data =
        %{<?xml version='1.0' encoding='UTF-8'?>
        <mailing-scenario xmlns='http://www.canadapost.ca/ws/ship/rate-v4'>
          <customer-number>#{ENV['CP_CUSTOMER_NUMBER']}</customer-number>
          <contract-id>#{ENV['CP_CONTRACT_ID']}</contract-id>
          <options>
            <option>
              <option-code>SO</option-code>
            </option>
          </options>
          <parcel-characteristics>
            <weight>#{total_weight}</weight>
            <dimensions>
              <length>30</length>
              <height>20</height>
              <width>10</width>
            </dimensions>
          </parcel-characteristics>
          <origin-postal-code>#{ENV['ZIP']}</origin-postal-code>
          <destination>
            <domestic>
              <postal-code>#{shipping_address.zip.upcase.delete(' ')}</postal-code>
            </domestic>
          </destination>
        </mailing-scenario>}

    response =
        RestClient.post(
            "#{'ct.' if !Rails.env.production?}soa-gw.canadapost.ca",
            Nokogiri::XML(xml_data).to_xml,
            {
              :'Accept' => 'application/vnd.cpc.ship.rate-v4+xml',
              :'Content-Type' => 'application/vnd.cpc.ship.rate-v4+xml',
              :'Authorization' => "Basic #{Rails.env.production? ? ENV['CP_PRODUCTION_CREDENTIAL'] : ENV['CP_DEVELOPMENT_CREDENTIAL']}",
              :'Accept-Language' => 'en-CA'
            }
        )

, но RestClient.post выдает ошибку RestClient::MovedPermanently (301 Moved Permanently), которая явно указывает на опечатку в URL.

Однако, этот запрос отлично работает в Почтальоне. Что-то не так с моим форматированием?

Сгенерированный xml выглядит нормально, поэтому я обеспокоен тем, что просто не понимаю, как отформатировать мой объект RestClient.

Какое здесь решение? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 22 мая 2019

URL был действительно неверным!В любом случае, спасибо!

...