Как я могу опубликовать XML-данные с помощью net / http, который также имеет данные в URL-адресе

Я работаю с api, который требует, чтобы я отправлял xml на URL-адрес, например someapi.com?userID=123. До сих пор я пробовал это (предположим, что xml уже находится в переменной xml):

url = URI.parse('http://www.someapi.com/process_leads.asp')
request = Net::HTTP::Post.new(url.path)
request.content_type = 'text/xml'
request.body = xml
request.set_form_data({'userID' => '1204'}, ';')
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}

Я пытаюсь выяснить, могу ли я использовать идентификатор пользователя в качестве данных формы, но также разместить xml? Я в основном должен отправить xml на http://www.someapi.com/process_leads.asp?userID=1204. Это возможно?


person kidbrax    schedule 03.11.2011    source источник
comment
Должен ли я использовать multipart, например заголовок stackoverflow.com/questions/184178/   -  person kidbrax    schedule 03.11.2011


Ответы (1)


Я бы подумал об использовании библиотеки Http, например. HTTParty

Пример использования HTTParty для вашего запроса будет выглядеть примерно так:

HTTParty.post('http://www.someapi.com/process_leads.asp', :query => {:userID => 1024}, :body => xml )

параметр: query принимает хэш ключей / значений, который будет добавлен в URL-адрес сообщения, а: body - это то место, где идет xml.

ПРИМЕЧАНИЕ: некоторые api требуют, чтобы xml имел имя, например. вам, возможно, придется сделать что-то вроде

:body => "request=#{xml}"

Надеюсь это поможет.

person David Barlow    schedule 03.11.2011
comment
Я боялся, что мне придется перейти в библиотеку http. Я попробую. - person kidbrax; 03.11.2011
comment
Не бойтесь ... Это облегчит вашу жизнь, и ваш код будет меньше пахнуть. - person David Barlow; 04.11.2011
comment
Сработало отлично после того, как я часами бился головой о стену и вдруг понял, что допустил простую опечатку! - person kidbrax; 05.11.2011