我有以下代码让这个程序搜索youtube gdata。
class Youtube
def search_url(term)
url = "https://gdata.youtube.com/feeds/api/videos"
url += "?q=#{term}&alt=json&restriction=US&max-results=50&orderby=viewCount"
url += "&fields=entry(id,title,yt:noembed,media:group(media:description),author(name),yt:statistics(@viewCount))"
url += "&key=#{DEV_KEY}"
然而,当我测试这个程序时,它似乎无法在搜索词包含"&"时搜索,就像流行的二重奏艺术家" Macklemore&瑞恩刘易斯"。
"&安培;"可能不是失败的原因。但我只是怀疑它。如果你认为"&"不是原因,你认为失败的原因是什么?如果你认为"&"是原因,我该如何解决?
答案 0 :(得分:1)
在将其作为URL参数发送之前,您需要转义该术语:
require 'cgi'
def search_url(term)
term = CGI.escape(term)
url = "https://gdata.youtube.com/feeds/api/videos"
url += "?q=#{term}&alt=json&restriction=US&max-results=50&orderby=viewCount"
url += "&fields=entry(id,title,yt:noembed,media:group(media:description),author(name),yt:statistics(@viewCount))"
url += "&key=#{DEV_KEY}"
使用CGI.escape
转义会产生URI安全参数:
CGI.escape('Macklemore & Ryan Lewis')
# => "Macklemore+%26+Ryan+Lewis"