Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python 3发布sessionid_Python_Sessionid - Fatal编程技术网

如何使用python 3发布sessionid

如何使用python 3发布sessionid,python,sessionid,Python,Sessionid,我是一个noob,我需要使用sessionid发布其他命令,比如search.do,我使用的是python3.5,但我不确定获取和发布它的最佳方式。 下面是我发布请求的方式 import urllib.parse url = 'https://myapi.application.com/dmapi/login.do' values = {'account' : 'MYACCOUNT', 'username': 'admin', 'password': 'pas1234', 'appid

我是一个noob,我需要使用sessionid发布其他命令,比如search.do,我使用的是python3.5,但我不确定获取和发布它的最佳方式。 下面是我发布请求的方式

import urllib.parse

url = 'https://myapi.application.com/dmapi/login.do'
values = {'account' : 'MYACCOUNT', 'username': 'admin', 'password':     'pas1234', 'appid':'12346'}

data = urllib.parse.urlencode(values)
data = data.encode('utf-8') # data should be bytes
req = urllib.request.Request(url, data)
resp = urllib.request.urlopen(req)
respData = resp.read()


print(respData)
打印得到这个结果

b'errorcode=0\r\nsessionid=ef9a9cbd-e063-4be2-9301-9de59891304c\r\n'
我需要在后续请求中使用sessionid。最好的办法是什么

一个想法是通过
sessionid=
提取最后一项:

>>> respData.split("sessionid=")[-1].strip()
'ef9a9cbd-e063-4be2-9301-9de59891304c'
另一种方法是使用正则表达式:

>>> import re
>>>
>>> re.search(r"sessionid=([A-Za-z0-9-]+)", respData).group(1)
'ef9a9cbd-e063-4be2-9301-9de59891304c'
一种方法是通过
sessionid=
提取最后一项:

>>> respData.split("sessionid=")[-1].strip()
'ef9a9cbd-e063-4be2-9301-9de59891304c'
另一种方法是使用正则表达式:

>>> import re
>>>
>>> re.search(r"sessionid=([A-Za-z0-9-]+)", respData).group(1)
'ef9a9cbd-e063-4be2-9301-9de59891304c'

事实上,响应由行(以字节为单位)组成,其中一行包含会话id。您可以简单地读取和解析您得到的内容:

resp = urllib.request.urlopen(req)
errorcode = None
sessionid = None
for line in resp.read():
    line = line.strip()   # remove end of line
    if line.startswith(b'errorcode'):
        errorcode = line.split(b'=')[1]
    if line.startswith(b'sessionid'):
        sessionid = line.split(b'=')[1]

事实上,响应由行(以字节为单位)组成,其中一行包含会话id。您可以简单地读取和解析您得到的内容:

resp = urllib.request.urlopen(req)
errorcode = None
sessionid = None
for line in resp.read():
    line = line.strip()   # remove end of line
    if line.startswith(b'errorcode'):
        errorcode = line.split(b'=')[1]
    if line.startswith(b'sessionid'):
        sessionid = line.split(b'=')[1]