req = requests.post调用
req.statu_scode == 200,但是仍然报错:
{"code":"404","message":"参数解析异常,请检查方法的参数是否有效"}
通过postman调用ok,代码直接执行也ok:
修改为json格式调用,报错:
data_pay =[{
'userId': '867857567567568678',
'orderCode': '999010188371',
'paymentType': '1',
'paymentMethod': 'ICBC_SBERBANK'
}]
PS E:Python> & C:/Users/AppData/Local/Programs/Python/Python38/python.exe e:/Python/Test/OrderGui/OrderStatus.py
200
{"info":"Duplicate data","resultCode":2000}
一开始以为'ContentType': 'application/json'格式不对应导致,添加后:
resp_web = requests.post(pay_url,data=payload,headers=headers) 还是报错。
最后排查原因为json格式错误导致,键值对使用了单引号。这里贴一下json的基础知识:
JSON 格式规则
- 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
- 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
- 字符串必须使用双引号表示,不能使用单引号。
- 对象的键名必须放在双引号里面。
- 数组或对象最后一个成员的后面,不能加逗号。
修改后,调用ok。
pay_url = 'https://rpcos.test.hihonor.com/invoke/com.huawei.vmall.oms.dubbo.api.OMSInterfaceForBalanceKey.updatePaymentStatus'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
'ContentType': 'application/json'
}
data_pay =[{
"userId": "867857567567568678",
"orderCode": "999010188371",
"paymentFee": "0",
"paymentAmount": "1000",
"paymentNo": "99910188375",
"paymentTime": "2021-10-18 11:22:00 +0800",
"paymentStatus": "1",
"paymentType": "1",
"paymentMethod": "ICBC_SBERBANK"
}]
payload="[{rnt"userId": "867857567567568678",rnt"orderCode": "999010188371", rnt"paymentFee": "0",rnt"paymentAmount": "7300",rnt"paymentNo": "48010188375",rnt"paymentTime": "2021-10-20 11:22:00 +0800",rnt"paymentStatus": "1",rnt"paymentType": "1",rnt"paymentMethod": "ICBC_SBERBANK"rn}]"
resp_web = requests.post(pay_url,json=data_pay,headers=headers)
resp_web1 = requests.post(pay_url,data=payload,headers=headers)
print(resp_web.status_code)
print(resp_web.text)
print(resp_web1.status_code)
print(resp_web1.text)



