Flask 400 Bad Request Браузер (или прокси-сервер) отправил запрос, который этот сервер не может понять JSON - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь отправить следующий объект JSON через curl в мое приложение Flask. Я получаю ошибку 400. Я думаю, это из-за значения в сценарии, которое имеет много специальных символов, когда я заменяю значение на 'test', работает нормально, я использую Windows.

запрос curl

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 голосов
/ 06 марта 2020

Вы пытались установить кодировку на "latin-1" (ISO-8859-1)? Это часто проблема при работе с windows данными. Латинская 1 представляет первые 256 кодовых точек набора символов Unicode. Кодовые точки 0–127 кодируются так, как если бы использовался UTF-8, а кодовые точки 128–255 кодируются как отдельные байты с латинскими 1 и 2-байтовые последовательности с UTF-8. См. https://en.wikipedia.org/wiki/ISO/IEC_8859-1 для получения дополнительной информации.

...