У меня проблема с приложением с закрытым исходным кодом, которое отправляет
неверный тип контента в шапке.
Я получаю данные как «content-type: application / x-www-form-urlencoded»
Я должен получить его как "content-type: application / json"
Ниже приведен код сервера фляги с использованием Flask и Flask-restful
from flask import Flask
from flask_restful import reqparse, abort, Api, Resource, request
TEST_PROXY = "0.0.0.0"
TEST_PROXY_PORT = 1885
DEBUG = True
app = Flask(__name__)
api = Api(app)
class TEST(Resource):
def get(self, queue, subqueue):
parser = reqparse.RequestParser()
parser.add_argument('m', type=str, help='A message')
args = parser.parse_args()
TEST_queue = f'/{queue}/{subqueue}'
message = args.get('m')
return {'type': 'GET',
'message': args.get('m'),
'queue': TEST_queue}
def post(self, queue, subqueue):
TEST_queue = f'/{queue}/{subqueue}'
# here is the problem
# because of the incorrect header
# the returned data is empty.
message = request.data
return {'type': 'POST',
'message-length': len(message),
'queue': TEST_queue}
api.add_resource(TEST, '/TEST/<string:queue>/<string:subqueue>')
if __name__ == '__main__':
app.run(debug=DEBUG, host=TEST_PROXY, port=TEST_PROXY_PORT)
Отправка
POST http://localhost:1885/TEST/sub/sub2
Content-Type: application/json
{"status": {"current_time": "now"}}
работает. request.data заполняется содержимым
POST http://localhost:1885/TEST/sub/sub2
Content-Type: application/x-www-form-urlencoded
{"status": {"current_time": "now"}}
работает, но request.data теперь пуст, вместо этого данные были проанализированы и больше не доступны в неизмененном виде.
Так как отправитель является закрытым исходным кодом, решение проблемы на этой стороне невозможно в короткие сроки.
Есть ли способ переопределить неправильный тип содержимого для запросов POST / этого запроса, чтобы я мог получить доступ к исходным опубликованным данным?