以下代码仅在curl中有效。如果您能告诉我为什么它不能在Python中使用请求,那就太好了
curl 'http://cdcnepal.com/Modules/HOmeMoviesLists/WebService2.asmx/GetShowsByDate' \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{"portalId":"1","showDate":"26/05/2014","flag":0,"size":9}'
但是在Python中,使用以下代码
import requests
import json
url = """http://cdcnepal.com/Modules/HOmeMoviesLists/WebService2.asmx/GetShowsByDate"""
headers = {"content-type":["application/json", "charset=UTF-8"]}
payload = {"portalId":"1","showDate":"26/05/2014","flag":0,"size":9}
r = requests.get(url, headers=headers, data=payload)
print r.text
起初curl请求还有其他内容,但是我意识到我可以删除几个。我不确定这是否导致了错误,因为curl请求正在工作。两个代码的响应不一样。
这可能有用。从Chrome开发工具中提取的Curl请求
curl 'http://cdcnepal.com/Modules/HOmeMoviesLists/WebService2.asmx/GetShowsByDate'
-H 'Cookie: OriginalReferrer=https://www.google.com/;
OriginalURL=http://cdcnepal.com/;
ASP.NET_SessionId=i5lbnql5hpp0wm1ywyqbywtj;
VisitCount=4'
-H 'Origin: http://cdcnepal.com'
-H 'Accept-Encoding: gzip,deflate,sdch'
-H 'Accept-Language: en-US,en;q=0.8,hi;q=0.6'
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36'
-H 'Content-Type: application/json; charset=UTF-8'
-H 'Accept: application/json, text/javascript, */*; q=0.01'
-H 'Referer:http://cdcnepal.com/Home.aspx'
-H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive'
-H 'DNT: 1'
--data-binary '{"portalId":"1","showDate":"27/05/2014","flag":0,"size":9}' --compressed
curl
-d
开关发送一个POST
请求,但是您使用的是requests.get()
,发送一个GET
请求(其主体被忽略)。使用
request.post()
将其改为POST:您还需要:
content-type
头使用列表,不支持单独指定参数。requests
不适合您。相反,传递给data
的字典被编码为application/x-www-form-urlencoded
数据。使用http://httpbin.org/post可以更轻松地将
curl
命令与requests
命令进行比较:以及
这两种情况都显示返回相同的
json
字典。如果您使用的是
requests
版本2.4.2或更高版本,也可以将JSON编码保留到库中;如果您将要发送的数据作为json
关键字参数传入,它也将设置正确的内容类型头:相关问题 更多 >
编程相关推荐