- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
编辑:我发现了问题。 #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 不起作用还是我在这里做错了什么?
最佳答案
问题是,#
确实是 URL 中的有效字符。它表示片段部分。由于片段总是由用户代理解析,因此它永远不会发送到服务器。你可以试试这个:
>>> import urllib3
>>> urllib3.util.parse_url(fql_url)
Url(scheme='https', auth=None, host='graph.facebook.com', port=None, path='/fql',
query='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 ',
fragment='user_sex)) ORDER BY name"}')
如您所见,URL 的最后一部分最终被解析为片段。
编辑:
最方便的方法可能是让请求完成所有编码。
import requests
s = requests.Session()
s.params = {'access_token': 'foobarbaz'} # so you don't have to specify it every time
query = ('{"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"}')
s.get('https://graph.facebook.com/fql', params={'q': query})
关于Python 请求 urlencode 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375624/
我正在编写一个 Web 应用程序并学习如何对 html 链接进行 urlencode... 这里的所有 urlencode 问题(参见下面的标签)都是“如何...?”问题。 我的问题不是“如何?”但“
Dart 中有进行 urlencoding 的函数吗?我正在使用 XMLHttpRequest 对象进行 AJAX 调用,并且需要对 url 进行 url 编码。 我在 dartlang.org 上进
我们有一些非常基本的 mod_rewrite 规则: RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302
Server.UrlEncode 和 HttpUtility.UrlEncode 之间有区别吗? 最佳答案 我之前对这些方法感到非常头疼,我建议您避免 UrlEncode 的任何变体,而是使用 Uri
在PHP中: php -r "echo urlencode('["IM"]'); " 结果是%5BIM%5D 但是在java中 String text = URLEncoder.encode('["
From Python 的 urllib.urlencode 的 java 等价物是什么? 喜欢 >>> urllib.urlencode({'abc':'d f', 'def': '-!2'}) '
我发现了一个奇怪的问题,即 urlencoding 行为不一致。 更新 Spring MVC 4.3 和 5.1 版本之间存在差异: // FAIL in MVC 4.x @Test public v
express 框架带有 express 函数 express.json() 和 express.urlencoded()。 我们有 body-parser 库,它似乎具有相同的功能。 我的问题是,b
所以我正在处理的站点有一个过滤系统,它通过一个查询字符串传递一个键和值系统来运行。 整个站点很快就会进行重构,我正在维护现有站点,因此在我们讨论实现这一点的正确方法之前,我只需要更改分隔符的想法。 现
Dart中有进行urlencoding的功能吗?我正在使用XMLHttpRequest对象进行AJAX调用,我需要对该URL进行URL编码。 我在dartlang.org上进行了搜索,但没有得到任何结
我正在创建一个涉及将中文字符作为 url 参数发送的 php 应用程序。 我必须发送如下查询: http://xyz.com/?q=New 但是 xyz.com 的脚本不会自动对中文字符进行编码。因此
全部, 有个文字区说 如果用户给出输入, here is my name and my mail id is "a@x.com" 当数据在服务器端发布时,数据被接收为 这是我的名字,我的邮件
我想使用java的URLEncoder class编码我的 url 字符串。但是,默认情况下它将空格转换为“+”(加号)。我希望它改用“-”(类似于本网站对其网址进行编码的方式)。 我想知道最好的方法
我想对以下内部模板进行 url 编码 {{address.street}} {{address.city}} {address.state}} 无论如何在模板端执行此操作并将其放入href(我不希望将
我想在控制台应用程序VB.NET,VS 2010 Beta 2中使用HttpUtility.UrlEncode。 System.Web.HttpUtility.UrlEncode(item) 错误消息
我有一个服务堆栈应用程序,一个测试服务收到一个简单的请求,但是我发现收到的请求的值与原始请求不匹配。 我发:http://localhost/testapp/test?value=%22test%20
有没有办法对路径中的目录分隔符/进行 urlencode ? 喜欢 urlencode('/this/is/my/file right here.jpg'); 最佳答案 你可以使用 explode将您
是否可以在不转换 # 或 % 的情况下运行 urlencode 函数? 最佳答案 你能不能只做: $str = urlencode($str); $str = str_replace("%23", "
我正在尝试使用可选参数 shown in the docs 对 Django 1.3 中包含斜杠的字符串进行 URL 编码: {{ someString|urlencode:"" }} 但是,斜杠不会
我无法快速找到谷歌答案,而且我面前没有帮助(长话短说),所以,我的问题是:是否有一种简单的方法可以在 MS Visual 中对字符串进行 URL 编码FoxPro 8 最佳答案 这是一个可以满足您需要
我是一名优秀的程序员,十分优秀!