Python请求模块-POST失败-无效字符';o';

Python请求模块-POST失败-无效字符';o';,python,python-2.7,rest,curl,jboss,Python,Python 2.7,Rest,Curl,Jboss,我正在尝试将一个原始curl命令转换为使用Python请求模块,但运气不好。这是一个查询JBoss Mgmt接口的简单请求,但它没有正确解析我的JSON 16:34:26,868 DEBUG [org.jboss.as.domain.http.api] (HttpManagementService-threads - 15) Unable to construct ModelNode 'Invalid character: o' Python版本 Python 2.7.6 工作原始卷曲命令:

我正在尝试将一个原始curl命令转换为使用Python请求模块,但运气不好。这是一个查询JBoss Mgmt接口的简单请求,但它没有正确解析我的JSON

16:34:26,868 DEBUG [org.jboss.as.domain.http.api] (HttpManagementService-threads - 15) Unable to construct ModelNode 'Invalid character: o'
Python版本

Python 2.7.6
工作原始卷曲命令:

/usr/bin/curl --digest -v -L -D - 'http://brenn:!12rori@localhost:9990/management' --header Content-Type:application/json '-d {"operation":"read-attribute","name":"server-state","json.pretty":1}'
在python代码中,我在REST/cURL负载中读到如下内容

import requests
----
def readconfigfile():
    with open('jboss_modification.cfg') as f:
        lines = f.readlines()
    return lines
配置文件看起来是这样的

{"operation":"read-attribute","name":"server-state","json.pretty":1}
我将str格式从readconfigfile()转换为字典,如下所示

def converttodictionary(incominglines):
commands = []
for lin in incominglines:
    #dumps = json.dumps(lin)
    obj = json.loads(lin)
    commands.append(obj)
return commands
def applyconfig(lines):
    url="http://localhost:9990/management"
    auth=HTTPBasicAuth('brenn', '!12rori')
    s = requests.Session()
    re=s.get(url,  auth=HTTPDigestAuth('brenn', '!12rori')) ##200 RESP
    s.headers.update({'Content-Type': 'application/json'})
    for line in lines:
        payload=line
        r=s.post(url,payload)
        print(r.text)
payload = json.dumps(command)

r = session.post(url, payload,auth=HTTPDigestAuth('brenn', '!12rori')
执行此请求的python代码如下

def converttodictionary(incominglines):
commands = []
for lin in incominglines:
    #dumps = json.dumps(lin)
    obj = json.loads(lin)
    commands.append(obj)
return commands
def applyconfig(lines):
    url="http://localhost:9990/management"
    auth=HTTPBasicAuth('brenn', '!12rori')
    s = requests.Session()
    re=s.get(url,  auth=HTTPDigestAuth('brenn', '!12rori')) ##200 RESP
    s.headers.update({'Content-Type': 'application/json'})
    for line in lines:
        payload=line
        r=s.post(url,payload)
        print(r.text)
payload = json.dumps(command)

r = session.post(url, payload,auth=HTTPDigestAuth('brenn', '!12rori')
非常感谢你的帮助吗

注意:在我解决其他问题时,此问题已更新了几次。…

问题是

初始JSON请求失败,因为当我从被解释为str的python文件中读取它时

已使用json.loads转换为字典,服务器接受请求,但无法解析json,出现非法字符错误

使用json.dumps将这个json转换回str——在我看来,这就像我最初尝试做的一样——现在可以了

  • 按照上面的
    def readconfigfile():
    读取JSON文件
  • 按照上面的
    def converttodictionary
    转换为json/字典:
    json.loads(lin)
  • 使用
    json.dumps
    将此json“返回”转换为字符串,并按如下方式发布

    def converttodictionary(incominglines):
    commands = []
    for lin in incominglines:
        #dumps = json.dumps(lin)
        obj = json.loads(lin)
        commands.append(obj)
    return commands
    
    def applyconfig(lines):
        url="http://localhost:9990/management"
        auth=HTTPBasicAuth('brenn', '!12rori')
        s = requests.Session()
        re=s.get(url,  auth=HTTPDigestAuth('brenn', '!12rori')) ##200 RESP
        s.headers.update({'Content-Type': 'application/json'})
        for line in lines:
            payload=line
            r=s.post(url,payload)
            print(r.text)
    
    payload = json.dumps(command)
    
    r = session.post(url, payload,auth=HTTPDigestAuth('brenn', '!12rori')
    
  • )