尝试在python中的方法中返回请求libary会话... 看起来很简单,我的脚本工作正常,然后我把它清理成一个类和方法,它将无法工作,似乎会话不能从方法返回?相当困惑,我相信这应该是这样的。
这是更改前的代码,它运行正常:
import requests
httpHeaders = { 'Host' : 'www.somesite.com',
'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'en-US,en;q=0.5',
'Accept-Encoding' : 'gzip, deflate',
'Connection' : 'keep-alive',
'Referer' : 'https://blah.someloginsite.com/logon',
'Content-Type' : 'application/x-www-form-urlencoded',
'Content-Length' : '59',
'Referer' : 'someurl.com'}
postContent = { 'UserName': 'blabhbhbhb',
'Password': 'qwerty',
'submit' : '',
'returnUrl' : ''}
s = requests.Session()
s.post('https://blah.someloginsite.com/logon', data=postContent, headers=httpHeaders)
param = {'someID': '225', 'anotherID': '0'}
r = s.post('https://someurl/doactionthatneedslogin', data=param)
print r.status_code
print r.headers['content-type']
print r.encoding
print r.text
上面的代码工作正常,但是当我将其分解为类和函数/方法时,它将无法正常工作。现在我清理代码并且它不起作用,似乎我不能在请求库中返回一个会话但是我确定我可以......?
import requests
class doit():
def __init__(self, username, password):
print "test"
spSession = self.getSession(username, password)
self.doAction(spSession, 33, 4)
#Initializes session
def getSession(self, username, password):
httpHeaders = {SAME AS ABOVE BLAHBLAHBLAH}
postContent = { 'UserName': username ,
'Password': password ,
'submit' : '',
'returnUrl' : ''}
s = requests.Session()
s.post('https://someurl.com/logon', data=postContent, headers=httpHeaders)
return s
def doAction(self, spSession, someid,anotherid):
param = {'someid': someid , 'anotherid': anotherid}
r = spSession.post('https://someurl/doactionthatneedslogin', data=param)
print r.status_code
print r.headers['content-type']
print r.encoding
print r.text
doit("usernameas","qwerty")
有关正在发生的事情的任何想法?第一个脚本有效;而第二个没有。我所做的只是清理它...... 我想拥有它,所以我可以在不同的方法中反复使用会话。
第二个脚本确实可以使用登录,所以看起来会话很好但第二个操作即使已经登录也无法正常工作。
这里有什么事?
-Scott
答案 0 :(得分:0)
嗯,这两个例子似乎使用了不同的参数,但我能看到的唯一显着差异是在第一个例子中的这一行......
param = {'someID': '225', 'anotherID': '0'}
......第二个例子中的这一行......
self.doAction(spSession, 33, 4)
...第一个是使用字符串作为参数,第二个是使用整数。如果将第二行更改为...
,会有什么不同吗?self.doAction(spSession, '33', '4')
...