httplib 的 get request 如何正确使用 params?

2017-01-06 10:10:11 +08:00
 RandomUser
类似的代码,除了 header 不一样, POST request 就没有问题
GET request 的 header 和实际请求是一致的,而且把整个 url 直接在浏览器访问也是没有问题的
麻烦不要说请用 requests 之类的,我就是想知道 httplib 怎么使用,毕竟这样比一长串 url 可视一些。。


import httplib, json, urllib

params = urllib.urlencode({
"offset": "0",
"limit": "10",
"longitude": "121.607022",
"latitude": "31.219697"
})

headers = {"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-Hans-CN;q=1"}
conn = httplib.HTTPConnection("api.sit.com")
conn.request("GET", "/activity", json.JSONEncoder().encode(params))
response = conn.getresponse()
2667 次点击
所在节点    Python
4 条回复
BOYPT
2017-01-06 11:15:55 +08:00
唉 楼主语文是哪个老师教的
不行就 wireshark 抓包看看有啥不一样吧
RandomUser
2017-01-06 11:25:33 +08:00
@BOYPT 很清楚啊

对于 post 请求,按照这种方法能正确请求
conn.request("POST", "/activity1", json.JSONEncoder().encode(params) , headers)
对于 get 请求,这个没有特殊要求其实是可以不加 header 的,但是不管加不加都不能正确传入 params
conn.request("GET", "/activity2", json.JSONEncoder().encode(params) , headers)

所以我想知道 get 请求是不是不能用 conn.request("GET", url, params , headers)这样的方式
我改成 conn.request("GET", "/activity2?" + json.JSONEncoder().encode(params))是可以的
BOYPT
2017-01-06 15:09:02 +08:00
@RandomUser 不能
ryd994
2017-01-07 03:03:53 +08:00
为什么是 JSON encode 啊
难道不该是 urlencode 么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/332601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX