2012-02-14 69 views
4

我想用JSON-RPC從網站轉儲一些數據,但我無法獲取任何信息。我使用後請求,甚至使用python模擬頭,但似乎是不夠的...如何使用python向JSON-RPC請求數據

我得到這個錯誤:{「error」:{「code」:590,「msg」:「couldn'牛逼解析請求參數「}}

代碼:

#!/usr/bin/python 
import urllib,urllib2,json,httplib 

url = 'localhost' 
parameters = {'method':'buscador.obtenerGruposAsignaturas',"params":json.dumps(["2025333","0"])} 
data = urllib.urlencode(parameters) 
headers = { 
"Content-Type": "application/json", 
'Content-Length' : len(data), 
"Referer":"localhost", 
"Cookie":'JSESSIONID=2C6BBA00328C1C2F67794E50337D6E3A.N1TS002' 
"User-Agent":'Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1'} 
conn=httplib.HTTPConnection(url,80) 
conn.request("POST","/search/JSON-RPC",data,headers) 



page = conn.getresponse().read() 
print page 

感謝您的意見或建議

回答

3

如果您正在使用JSON-RPC,也許你應該JSON編碼parameters而不是用urlencode?

+0

你的意思是:參數= {'method':'search.searchGroup',「params」:json.dumps([「2012」,「0」])}#沒有工作:S – Motheus 2012-02-14 16:06:40

+0

哦,你是對的,我得到它了。使用urlencode失敗。 – Motheus 2012-02-14 16:11:54

+0

一個讓我感到困惑的問題:如果使用'requests'庫,請注意'requests.post'的第二個參數是'data',並且你不想把你的參數放在那裏,而是在它的第三個參數,'json',這是OP的例子:'requests.post(url,json = data,headers = headers)'。 – Jir 2017-04-07 09:37:11