Python请求模块POST失败的无效字符“o”

2024-03-29 11:57:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个原始curl命令转换为使用Python请求模块,但运气不佳。这是一个查询jbossmgmt接口的简单请求,但它无法正确解析我的JSON。在

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

Python版本

^{pr2}$

工作原始卷曲命令:

/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

执行此请求的python代码如下

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)

有什么特别感谢的帮助吗?在

注意:这个问题已经更新了几次,因为我解决了其他问题。。。。在


Tags: 命令jsonlocalhosthttpurldefascontent
1条回答
网友
1楼 · 发布于 2024-03-29 11:57:09

问题是。。。在

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

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

使用将此json转换回strjson.dumps文件在我看来,这就像我一开始想做的,现在这很管用

  1. 按照上面的def readconfigfile():读取JSON文件
  2. 根据上面的def converttodictionary转换为json/字典:json.loads(lin)
  3. 使用json.dumps将这个json“back”转换为一个字符串,并按如下方式发布

    payload = json.dumps(command)
    
    r = session.post(url, payload,auth=HTTPDigestAuth('brenn', '!12rori')
    

相关问题 更多 >