python请求错误:prolog中不允许内容

python请求错误:prolog中不允许内容,python,curl,python-requests,Python,Curl,Python Requests,基本上,如果我运行命令curl: curl -k -u user:pass --header 'Content-Type: application/xml' --request POST --data '<LocalIDs><LocalID ID="9128615"/></LocalIDs>' --url https://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleNam

基本上,如果我运行命令curl:

curl -k -u user:pass --header 'Content-Type: application/xml' --request POST --data '<LocalIDs><LocalID ID="9128615"/></LocalIDs>' --url https://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids
curl-k-u用户:pass--header'Content Type:application/xml'--request POST--data'--urlhttps://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids
我的答案如下:

<?xml version="1.0" encoding="UTF-8"?><ItemIDResults><ItemIDResult 
LocalID="9528017" ItemID="828570"/></ItemIDResults>

我用python编写了一个脚本来运行此命令:

#!/usr/bin/python

import requests
import urllib3

urllib3.disable_warnings()

headers = {
'Content-Type': 'application/xml',
}

data = {
'<LocalID ID': '"9528017"/>'
}

response = requests.post('https://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids', headers=headers, data=data, verify=False, auth=('user', 'pass'))

print (response.encoding)
print (response.headers['Content-Type'])
print (response.headers)
print (response.text)
print (response.content)
print (response.reason)`
#/usr/bin/python
导入请求
导入urllib3
urllib3.禁用_警告()
标题={
“内容类型”:“应用程序/xml”,
}
数据={
''
}
response=requests.post('https://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids,headers=headers,data=data,verify=False,auth=('user','pass'))
打印(响应.编码)
打印(response.headers['Content-Type'])
打印(响应.标题)
打印(response.text)
打印(response.content)
打印(响应、原因)`
并给出以下错误:

ISO-8859-1文本/普通{'Set-Cookie': 'JSESSIONID=md1waumsuoe81jceaxacbqgid;Path=/pc;Secure','Expires': '1970年1月1日星期四00:00:00 GMT','内容类型':'文本/普通','日期': “2019年4月9日星期二10:28:54 GMT”,“内容长度”:“173”,“服务器”: 'Jetty(9.3.5.v20151012)}发生JAXBEException:处的ParseError [行,列]:[1,1]消息:prolog中不允许包含内容。。解析错误 在[行,列]:[1,1]消息:prolog中不允许有内容。。 发生b'JAXBEException:ParseError位于[row,col]:[1,1]\n消息: prolog中不允许包含内容。。解析错误在 [行,列]:[1,1]\n消息:prolog中不允许有内容..'坏的 请求

我认为问题在于编码。当我只运行curl命令时:

curl -k -u user:pass --header 'Content-Type: application/xml' --request POST --data '<LocalIDs><LocalID ID="9128615"/></LocalIDs>' --url https://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids
命令:

curl -k -u user:pass --header 'Content-Type: application/xml' --request POST --data '<LocalIDs><LocalID ID="9128615"/></LocalIDs>' --url https://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids
curl-k-u用户:pass--header'Content Type:application/xml'--request POST--data'--urlhttps://rhtpcapc001:8182/pc/center/webservice/datasources/dataSourceConsoleName/Data%20Aggregator%40RHTPCADA201/itemids
输出:

<?xml version="1.0" encoding="UTF-8"?><ItemIDResults><ItemIDResult LocalID="9528017" ItemID="828570"/></ItemIDResults>

在回答中,我们看到encoding=“UTF-8”

在带有response.encoding的python脚本中,我看到了编码ISO-8859-1

提前谢谢你的帮助


David

在脚本中,您将数据设置为某个值(
'
-这看起来有点奇怪)-但是在命令行上,您传递了空数据。哪一个是正确的?@AndersLindahl你说得对。这是一个错误的复制/粘贴。我已经使用正确的curl命令进行了编辑。谢谢。如果您将
data={''}
更改为
data={'。encode('utf-8')}
@Frans仍然给出错误,那么响应是什么。结果是:prolog中不允许出现“ascii”“text/plain”和“给出相同错误”内容。。ParseError at'It think I know what's error:在curl中,您正在发送XML
'
。在Python脚本中,您正在发送dict
{'Content Type':'application/xml',}
。你能试试这些选项吗:
data='
data=''''\
data='''\'\'.encode('utf-8')
在你的脚本中,你把数据设置成某种东西(
'
-看起来有点奇怪)-但是在命令行上,你传递的是空数据。哪一个是正确的?@AndersLindahl你说得对。这是一个错误的复制/粘贴。我已经使用正确的curl命令进行了编辑。谢谢。如果您将
data={''}
更改为
data={'。encode('utf-8')}
@Frans仍然给出错误,那么响应是什么。结果是:prolog中不允许出现“ascii”“text/plain”和“给出相同错误”内容。。ParseError at'It think I know what's error:在curl中,您正在发送XML
'
。在Python脚本中,您正在发送dict
{'Content Type':'application/xml',}
。你能试试这些选项吗:
data=''
data='''\'
data='''\'''.encode('utf-8')