2014-01-06 4 views
3

Я пытаюсь узнать Ruby/Faraday. Мне нужно отправить POST XML в веб-службу RESTful, и я не понимаю, как это сделать.Как использовать POST XML с помощью Faraday и получать ответ?

У меня есть строка, содержащая XML следующим образом:

require "faraday" 
require "faraday_middleware" 
mystring = %&<xml><auth><user userid='username' pwd='password'/></auth></xml>& 

Как разместить XML на URL и получить результат? Я пытаюсь сделать что-то вроде:

conn = Faraday.new(:url=>'http://url') 
conn.post '/logon' {mystring} 

Я получаю сообщение:

SyntaxError: (irb):11: syntax error, unexpected '{', expecting $end 
conn.post '/logon' {mystring} 

Edit 1 Я получил запрос POST на работу. Мой код приведен ниже.

require "faraday" 
require "faraday_middleware" 

myString = %&<xml><auth><user userid='username' pwd='password'/></auth></xml>& 
myUrl = %&url& 

conn = Faraday.new(:url => myUrl) do |builder| 
    builder.response :logger #logging stuff 
    builder.use Faraday::Adapter::NetHttp #default adapter for Net::HTTP 
end 

res = conn.post do |request| 
    request.url myUrl 
    request.body = myString 
end 

puts res.body 

ответ

3

According to the documentation:

conn = Faraday.new(:url=>'http://url') 
conn.post '/logon', mystring 

Есть две ошибки в коде. Первый заключается в том, что вам не хватает запятой между URL-адресом и переменной, заставляя { mystring } интерпретироваться как блок.

Вторая ошибка в том, что mystring уже содержит строку и следующий код не имеет смысла в Ruby:

{ "string" } 

Таким образом conn.post '/logon', mystring неправильно. Таким образом, окончательный результат:

conn = Faraday.new(:url=>'http://url') 
conn.post '/logon', mystring 

или:

conn = Faraday.new(:url=>'http://url') 
conn.post '/logon', { :key => mystring } 

, если вы хотите, чтобы представить тело POST ключ/значение. Но это не ваше дело, потому что вы уже отправляете тело XML.

+0

Как мне получить ответ? Я все еще ищу какую-то «хорошую» документацию. Любые ссылки? –

+0

Ответ должен быть возвращен из вызова conn.post. См. Это: http://mislav.uniqpath.com/2011/07/faraday-advanced-http/ – wiebersk

Смежные вопросы