mysql - 我如何在 ruby​​ 中解析这个查询 url

标签 mysql ruby parsing

这是我在curl中的查询命令,我可以得到我期望的结果

curl --data "action=search&user=wbt&project=Test&ltoken=&query=build:tables_tempkb status:Analyze" http://xxx.xxx.xxx:8088/review/api

但是,如果我尝试在 ruby​​ 中查询

url = "http://xxx.xxx.xxx.xxx:8088/review/api/?action=search&user=wbt&project=Test&ltoken=&query=build:tables_tempkb status:Analyze"
uri = URI(url)
res = Net::HTTP.post_form(uri, 'q' => 'ruby')

ruby 报告以下解析错误

bad URI(is not URI?): http://xxx.xxx.xxx.xxx:8088/review/api/?action=search&user=wbt&project=Test&ltoken=&query=build:tables_tempkb status:Analyze
["C:/Ruby200/lib/ruby/2.0.0/uri/common.rb:176:in `split'", "C:/Ruby200/lib/ruby/2.0.0/uri/common.rb:211:in `parse'", "C:/Ruby200/lib/ruby/2.0.0/uri/common.rb:747:in `parse'", "C:/Ruby200/lib/ruby/2.0.0/uri/common.rb:996:in `URI'"

你能让我知道我的 ruby​​ 脚本出了什么问题吗?

最佳答案

将空格转换为%20。这有效:

url = "http://xxx.xxx.xxx.xxx:8088/review/api/?action=search&user=wbt&project=Test&ltoken=&query=build:tables_tempkb%20status:Analyze"
uri = URI(url)

或者,使用 + 代替:

url = "http://xxx.xxx.xxx.xxx:8088/review/api/?action=search&user=wbt&project=Test&ltoken=&query=build:tables_tempkb+status:Analyze"
uri = URI(url)

两者都将在接收应用程序中被解码为空格。

参见Percent Encoding .

关于mysql - 我如何在 ruby​​ 中解析这个查询 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374443/

相关文章:

python - peewee 外键错误

php - 查询 SQL 无法与 Laravel 5 Controller 一起使用

php - mysql 计数函数问题

ruby - 如何告诉 grunt 在本地 node_modules 中寻找模块?

ruby-on-rails - 为什么 rails 在设置后更改属性 _was 值的类型?

php - 多语言网站的最佳数据库模型

ruby-on-rails - rvm installation -/usr/local/rvm : permission denied (Before this, 我在 Ubuntu 中误删除了主目录)

parsing - 左分解和左递归之间的区别

java - Java中SimpleDateFormat解析方法遇到问题

C# - 解析包含逻辑运算符的复杂字符串