Flask 400错误请求浏览器(或代理)发送了一个请求,要求该服务器无法理解JSON

时间:2020-02-27 10:18:47

标签: python json curl flask uwsgi

我试图通过curl将以下JSON对象发送到我的Flask应用程序,但出现错误400。我认为这是因为脚本中的值包含许多特殊字符,当我用“ test”替换那里的值时,它工作正常,我正在使用Windows。

卷曲请求

curl -X POST -d @example_post.json http://test/hlt  --header "Content-Type:application/json; charset=utf-8"

数据:

{
    "item-type": "Magazine",
    "clip-id": "",
    "source-language": null,
    "target-language": "de",
    "item-id": "0000000b000ca0d5",
    "item-title": "Drone Malaui | SHIS200207_001_MalawiDrones_01F",
    "publication-title": "",
    "video-path": "test_files/TestFile.mp4",
    "ftp-url": "test_files/TestFile.mp4",
    "script": " ++++++++++++++++++++++++++++++++++++++++++++++++++Bilder:  The_power_of_hope1.KONF.20728229++++++++++++++++++++++++++++++++++++++++++++++++++Première:  SHIS200207_001_MalawiDrones_01F++++++++++++++++++++++++++++++++++++++++++++++++++Titel:evo aquí he hecho este drone. Lo construí con mis propias manos, con los materiales que nos proporcionan en el curso. Nos dieron los materiales y nos explicaron cómo emplearlos. Seguí las instrucciones y aquí está el resultado.\\\"+++1:34Ellos son los 26 primeros alumnos de los 150 que la academia planea formar antes de finales de 2021. A partir de 2022, está previsto ofrecer una maestría en tecnología de drones. 1:49  +++SOT Rudolf Schwenk, UNICEF Malawi country representative+++\\\"Es un paso importante para ayudar a los jóvenes a adquirir habilidades del siglo XXI. La década que recién comenzó va a ser digital, y ayudar a los jóvenes a mejorar sus habilidades y aprender tecnología digital y manejo de drones va a suponer un avance enorme, no sólo para Malawi, sino también para muchos otros países de África.\\\"+++2:13Gracias a jóvenes como ellos, la tecnología de los drones con fines humanitarios podrá levantar vuelo y servir de ejemplo a otros países. "
}

app.py

@app.route('/mydomain', methods=['POST'])

    def upload_videos():
        print('request=', request.json, file=sys.stderr)
        if request.method == "POST":
            data = request.get_json()
            if data is not None:
               # print('request=', request, file=sys.stderr)
                res = upload_file(data, bucket)
                print(res, file=sys.stderr)
                return(res)
        return 'no data found'

1 个答案:

答案 0 :(得分:0)

您是否尝试过将字符集设置为“拉丁1”(ISO-8859-1)?使用Windows数据时,这通常是问题。拉丁语1表示Unicode字符集的前256个代码点。代码点0-127就像使用UTF-8一样被编码,但是代码点128-255被编码为Latin-1的单字节和UTF-8的2字节序列。有关更多信息,请参见https://en.wikipedia.org/wiki/ISO/IEC_8859-1