【发布时间】:2013-06-26 20:54:50
【问题描述】:
编辑:我发现了问题所在。 #user_sex 中的 # 没有被 python 请求转换为 %23。有没有办法强制 python 请求将 # 转换为 %23 或者我只需要手动编写那部分代码?
我正在尝试制作一个 facebook fql 多查询。当我使用下面的 fql_url 时
fql_url = (
'https://graph.facebook.com/fql?q='
'{"user_sex":"SELECT sex FROM user WHERE uid=me()",'
'"friends":"SELECT uid, name FROM user WHERE uid IN '
'(SELECT uid2 FROM friend WHERE uid1 = me()) '
'AND not (sex in (SELECT sex FROM #user_sex)) '
' ORDER BY name"}'
'&access_token='+access_token
)
然后运行requests.get(fql_url),返回的json是
{u'error': {
u'code': 601,
u'message': u"(#601) Parser error: unexpected '{' at position 0.",
u'type': u'OAuthException'}
}
但是,当我将 fql_url 手动编码为这样时
fql_url = (
'https://graph.facebook.com/fql?q=%7B%22'
'user_sex%22:%22SELECT%20sex%20FROM%20user%20WHERE%20uid=me()%22,%22'
'friends%22:%22SELECT%20uid,%20name%20FROM%20user%20WHERE%20uid%20IN%20'
'(SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20=%20me())%20'
'AND%20not%20(sex%20in%20(select%20sex%20from%20%23user_sex))%20%20'
'ORDER%20BY%20name%22%7D&'
'access_token='+access_token
)
一切正常(json 有所需的数据)。
我比较了第一个 fql_url 和手动编码的 fql_url,两者都应该导致使用相同的 url 来获取 json。请求 urlencode 不起作用还是我在这里做错了什么?
【问题讨论】:
标签: python facebook url facebook-fql python-requests