Ruby on rails 在rails 3.0.9中使用Nokogiri捕获XML响应
我正在尝试验证登录过程,在我的登录过程中,如果用户名和密码正确,则用户将登录到其仪表板,但如果用户名和密码错误,则我将收到一个XML响应 以下是会话控制器代码 {Ruby on rails 在rails 3.0.9中使用Nokogiri捕获XML响应,ruby-on-rails,nokogiri,Ruby On Rails,Nokogiri,我正在尝试验证登录过程,在我的登录过程中,如果用户名和密码正确,则用户将登录到其仪表板,但如果用户名和密码错误,则我将收到一个XML响应 以下是会话控制器代码 { 需要“net/http” 需要“uri” 需要“打开uri” 需要“nokogiri” 类sessioncontroller
需要“net/http”
需要“uri”
需要“打开uri”
需要“nokogiri”
类sessioncontroller
}
我从服务器得到这种XML响应
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<action>
<name>login</name>
<status>failed</status>
<status_message>Error description</status_message>
</action>
登录
失败
错误描述
当我得到这个响应时,我想使用上面的XML响应刷新错误消息
如果任何人有任何想法,我都可以拯救我的一天。嘿,伙计们,我终于完成了上述功能。这并不像我想的那样困难,我正在这里粘贴确切的代码片段
def create
a = "http://<SERVER IP>/billing/api/login?u=#{params[:session][:email]}&p=#{params[:session][:password]}"
# Nokogiri Gem is used to Catch the XML response from the MOR & call the appropriate action on the received status
doc = Nokogiri::XML(open(a))
doc.xpath('/action/status').each do |link|
@abc = link.content
end
# Condition to check whether the received response is 'Ok' or 'Failed'
if @abc == 'failed'
flash[:notice] = "Invalid Username/Password" # If condition is failed redirect to root page
redirect_to '/'
else
# if condition is 'ok' redirect to MOR user dashboard
redirect_to "http://<SERVER IP>/billing/api/login?u=#{params[:session][:email]}&p=#{params[:session][:password]}"
end
def创建
a=”http:///billing/api/login?u=#{params[:session][:email]}&p={params[:session][:password]}”
#Nokogiri Gem用于捕获来自MOR的XML响应,并对接收到的状态调用适当的操作
doc=Nokogiri::XML(开放(a))
doc.xpath('/action/status')。每个do | link |
@abc=link.content
结束
#检查接收到的响应是“正常”还是“失败”的条件
如果@abc==“失败”
flash[:notice]=“无效用户名/密码”#如果条件失败,则重定向到根页面
将_重定向到“/”
其他的
#如果条件为“正常”,则重定向至MOR用户仪表板
将_重定向到“http:///billing/api/login?u=#{params[:session][:email]}&p={params[:session][:password]}”
结束
endNokogiri让您可以直接访问文档的文本:
require 'nokogiri'
doc = Nokogiri::XML(
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<action>
<name>login</name>
<status>failed</status>
<status_message>Error description</status_message>
</action>'
)
您可以将代码简化为以下内容:
doc = Nokogiri::XML(open(a))
if doc.text['failed']
...
doc.text
>> "\nlogin\nfailed\nError description\n"
doc = Nokogiri::XML(open(a))
if doc.text['failed']
...