这是我在curl中的查询命令,我可以得到我期望的结果
curl --data "action=search&user=wbt&project=Test<oken=&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<oken=&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<oken=&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<oken=&query=build:tables_tempkb%20status:Analyze"
uri = URI(url)
或者,使用 +
代替:
url = "http://xxx.xxx.xxx.xxx:8088/review/api/?action=search&user=wbt&project=Test<oken=&query=build:tables_tempkb+status:Analyze"
uri = URI(url)
两者都将在接收应用程序中被解码为空格。
参见Percent Encoding .
关于mysql - 我如何在 ruby 中解析这个查询 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374443/