Json Post请求返回空正文响应(200无)

Json Post请求返回空正文响应(200无),json,flask,python-requests,Json,Flask,Python Requests,向机器学习API发送post响应返回空正文, 请求的代码很简单: import json import requests for row in new_f.itertuples(): features = [{ 'CRIM' : str(row.CRIM), 'ZN' : str(row.ZN), 'INDUS' : str(row

向机器学习API发送post响应返回空正文, 请求的代码很简单:

import json
import requests
for row in new_f.itertuples():
            features = [{
                       'CRIM' : str(row.CRIM), 
                       'ZN' : str(row.ZN), 
                       'INDUS' : str(row.INDUS), 
                       'CHAS' : str(row.CHAS), 
                       'NOX' : str(row.NOX), 
                       'RM' : str(row.RM), 
                       'AGE' : str(row.AGE), 
                       'DIS' : str(row.DIS), 
                       'RAD' : str(row.RAD), 
                       'TAX' : str(row.TAX), 
                       'PTRATIO' : str(row.PTRATIO), 
                       'B' : str(row.B), 
                       'LSTAT' : str(row.LSTAT)
                       }]
            postre = json.dumps(features)
            print(postre)
            response  = requests.post(url = 'http://127.0.0.1:5000/predict' , data= postre )
            print(response.json())
打印(postre)的输出为:

打印response.json时出现错误:

第34行,在predict\n query=pd.get\u dummies(pd.DataFrame(json))…ValueError:No objects to concatenate\n'}

以下是Post api methode代码段:

if flask.request.method == 'POST':
        try:
            json_ =request.json
            print(json_)
            query_ =pd.get_dummies(pd.DataFrame(json_))
            query = query_.reindex(columns = model_columns, fill_value = 0)
            prediction = list(classifier.predict(query))

            return jsonify({
                "prediction":str(prediction)
            })
        except:
            return jsonify({
                "trace": traceback.format_exc()
            })

Post man请求应用程序返回所需的结果:


{
    "prediction": "[42.267999999999994]"
}

您是否从Flask导入请求

write
json\uux=flask.request.json


首先,您可以在请求中发送列表,而无需序列化,而不是
json\uu=request.json

。而且,如果您将其作为
json
发送,它会将标题中的
内容类型
更改为
application/json
。因此,请使用:

response = requests.post(url = 'http://127.0.0.1:5000/predict', json=features)
然后,为了查看响应是什么,请尝试:

print(request.get_json())
print(request.json)
如果您使用:

get_json(force=True), it will try to parse it as JSON even if you send with wrong mimetype.

是的!还是不走运
get_json(force=True), it will try to parse it as JSON even if you send with wrong mimetype.