我相信這個問題是由于python將所有'格式化為',這將導致我在運行程式時收到錯誤訊息。我的代碼如下:
import requests
import json
import pandas as pd
username = input('enter username here: ')
print('')
passw = input('enter password here: ')
mcpayload = {"agent": {"name": "Minecraft", "version": 1}, "username": "{}".format(username), "password": "{}".format(passw), "requestUser": "true"}
header = {"Content-Type": "application/json"}
logintoken = requests.post('https://authserver.mojang.com/authenticate', data = mcpayload, headers = header)
print(logintoken.text)
print('')
print(logintoken.json)
print('')
print(logintoken.content)
它在運行時回傳此錯誤訊息:
{"error":"JsonParseException","errorMessage":"Unrecognized token 'agent': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (org.eclipse.jetty.server.HttpInputOverHTTP); line: 1, column: 7]"}
<bound method Response.json of <Response [400]>>
b'{"error":"JsonParseException","errorMessage":"Unrecognized token \'agent\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\\n at [Source: (org.eclipse.jetty.server.HttpInputOverHTTP); line: 1, column: 7]"}'
uj5u.com熱心網友回復:
問題是您沒有發送 json 字串,而是發送了 python 字典。您需要先將其轉換為 json,然后再發送。
您將需要使用 json.dumps 將字典物件轉換為 json 字串。
header=json.dumps(header) #converting dict to json
mcpayload=json.dumps(mcpayload) #converting dict to json
代碼應如下所示:
import requests
import json
import pandas as pd
username = input('enter username here: ')
print('')
passw = input('enter password here: ')
mcpayload = {"agent": {"name": "Minecraft", "version": 1}, "username": "{}".format(username), "password": "{}".format(passw), "requestUser": "true"}
header = {"Content-Type": "application/json"}
header=json.dumps(header) #converting dict to json
mcpayload=json.dumps(mcpayload) #converting dict to json
logintoken = requests.post('https://authserver.mojang.com/authenticate', data = mcpayload, headers = header)
print(logintoken.text)
print('')
print(logintoken.json)
print('')
print(logintoken.content)
uj5u.com熱心網友回復:
如果要發送 JSON,請通過 kwarg 傳遞 JSON 物件json,而不是data:
logintoken = requests.post(
'https://authserver.mojang.com/authenticate',
json=mcpayload
)
此外,您可以省略發送自定義標頭,因為requests.post()它將自動為您序列化物件并設定適當的標頭。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435550.html
