Я пытаюсь отправить запрос на публикацию в 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.
Какое здесь решение? Любая помощь приветствуется.