Ruby 1.9.3: кодировать XML для URL - PullRequest
0 голосов
/ 17 февраля 2012

Я сделал

require "builder"
require "uri"

caption_preview_url = "http://api.cheezburger.com/xml/captions/preview"
encoded_xml = URI.escape(caption_xml.to_s)

xml = Builder::XmlMarkup.new( :indent => 2 )
xml.instruct! :xml, :encoding => "ASCII"
xml.CaptionPreview do |element|
      element.CaptionedImageUrl = "http://api.cheezburger.com/xml/caption/" + encoded_xml
end
post_xml(caption_preview_url,xml) #posts to the URL with a header

Я получаю с сервера неописуемую ошибку:

Неожиданная ошибка Сведения об этой ошибке записаны на сервере.Идентификатор события ошибки: be4bf0d8-f230-4301-9d88-eae35bcc9321 be4bf0d8-f230-4301-9d88-eae35bcc9321

Мое первое предположение состоит в том, что это мое кодирование, но я не уверен, что я сделал бы неправильно

Редактировать:

Выходные данные заголовка xml:

  def build_caption_xml(lol_caption_data) #lol_caption_data is an object I pass in where I have set attrs for the xml (e.g. FontType, Text etc).
    xml = Builder::XmlMarkup.new( :indent => 2 )
    xml.instruct! :xml, :encoding => "utf-8"
    xml.Caption do |element|
      element.Text            lol_caption_data.text
      element.FontFamily      lol_caption_data.font_family
      element.FontSize        lol_caption_data.font_size
      element.FontColor       lol_caption_data.font_color
      element.XPosition       lol_caption_data.x_position
      element.YPosition       lol_caption_data.y_position
      element.IsBold          lol_caption_data.is_bold
      element.TextStyle       lol_caption_data.text_style
      element.IsItalic        lol_caption_data.is_italic
      element.IsStrikeThrough lol_caption_data.is_strikethrough
      element.IsUnderline     lol_caption_data.is_underline
      element.Opacity         lol_caption_data.font_opacity
    end
    return xml
  end

Дальнейшее редактирование:

Выход XML:

<?xml version="1.0" encoding="utf-8"?>
<Caption>
  <Text>Meow?</Text>
  <FontFamily>Impact</FontFamily>
  <FontSize>25</FontSize>
  <FontColor>White</FontColor>
  <XPosition>10</XPosition>
  <YPosition>10</YPosition>
  <IsBold>false</IsBold>
  <TextStyle>outline</TextStyle>
  <IsItalic>false</IsItalic>
  <IsStrikeThrough>false</IsStrikeThrough>
  <IsUnderline>false</IsUnderline>
  <Opacity>100</Opacity>
</Caption>

Кодированный вывод:

% 3C? Xml% 20version =% 221.0% 22% 20 кодирование =% 22utf-8% 22?% 3E% 0A% 3Caption% 3E% 0A% 20% 20% 3CText% 3Eeow?% 3C / Text% 3E% 0A% 20% 20% 3CFontFamily% 3EImpact% 3C / FontFamily% 3E% 0A% 20% 20% 3CFontSize% 3E25% 3C / FontSize% 3E% 0A%20% 20% 3CFontColor% 3EWhite% 3C / FontColor% 3E% 0A% 20% 20% 3CXPosition% 3E10% 3C / XPosition% 3E% 0A% 20% 20% 3CYPosition% 3E10% 3C / YPosition% 3E% 0A% 20%20% 3CIsBold% 3Efalse% 3C / IsBold% 3E% 0A% 20% 20% 3CTextStyle% 3Eoutline% 3C / TextStyle% 3E% 0A% 20% 20% 3CIsItalic% 3Efalse% 3C / IsItalic% 3E% 0A% 20% 20%3CIsStrikeThrough% 3 Efalse% 3C / IsStrikeThrough% 3E% 0A% 20% 20% 3CIsUnderline% 3Efalse% 3C / IsUnderline% 3E% 0A% 20% 20% 3COpacity% 3E100% 3C / непрозрачность% 3E% 0A% 3E / Caption% 0A

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...