Как я могу опубликовать данные 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)}

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

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}"

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

Другие вопросы по тегам