如何使用请求执行HTTP / XML身份验证

时间:2015-06-07 02:09:19

标签: python xml authentication cookies python-requests

我正在尝试使用请求2.7使用Python 3.4对Docushare进行身份验证。我对Python和请求模块相对较新,但我已经完成了很多阅读,并且无法取得更多进展。我的代码没有给出任何错误,我从我的帖子请求中收到了一个JSESSIONID cookie,但是我没有收到AmberUser身份验证cookie。我不知道如何进一步调查,以找出问题所在。

请求的格式来自http://docushare.xerox.com/en-us/Help/prog/prog5.htm#Authentication

请求:

ctrl.deleteObject

我的Python /请求代码如下:

POST  /dscgi/ds.py/Login  HTTP/1.1
Host:  docushare.xerox.com
Content-Type: text/xml
Content-Length: xxxx

<?xml version="1.0" ?>
<authorization>
  <username>msmith</username>
  <password>mysecretstring</password>
</authorization>

我得到的输出是

import requests

url = "https://mydocusharesite/dsweb/Login"

xml="""<?xml version='1.0' ?>
<authorization>
<username>myusername</username>
<password><![CDATA[mypa$$word]]></password>
<domain>DocuShare</domain>
</authorization>"""

headers = {"DocuShare-Version":"5.0", 'Content-Type':'text/xml'}

s = requests.Session()
r = s.post(url,data=xml,headers=headers)
print('Status code:', r.status_code)
print('headers:\n', r.headers)
print('request headers:\n',r.request.headers)
c = s.cookies
print('Cookies:\n', c)

1 个答案:

答案 0 :(得分:1)

您的CDATA部分应该看起来像<![CDATA[mypa$$word]]>。您的代码目前正在发送![CDATA[mypa$$word]]作为实际密码。