python请求错误:prolog中不允许内容
基本上,如果我运行命令curl: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 -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')