2016-11-15 6 views
-1

Вот клиент:Python 3 Flask - как отправить данные на сервер?

data = b'48958695427097097402529251103137444756' 
r = requests.post("http://127.0.0.1:5000", data=data) 

Вот сервер:

#! /usr/bin/env python3 
# -*- coding: utf-8 -*- 

from flask import Flask, Response, request 

app = Flask(__name__) 

@app.route('/', methods=['POST', 'GET']) 
def get_data(): 
    print('Recieved from client: {}'.format(request.data)) 
    return Response('We recieved something…') 

if __name__ == ‘__main__’: 
    app.run(debug=True) 

Клиент отправить байт строки сервера, но сервер получит только: б ' Почему?

И как заставить сервер получать всю байтовую строку? Спасибо.

ответ

0

ваш @app.route не содержит method поэтому вам нужно добавить

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

Для того, чтобы понять, как @app.route работы, см this

отредактированный код твоего

from flask import Flask, Response, request 

app = Flask(__name__) 

@app.route('/', methods=['POST']) 
def get_data(): 
    print('Recieved from client: {}'.format(request.data)) 
    return Response('We recieved something…') 

if __name__ == '__main__': 
    app.run(debug=True) 
+0

Были методы, я не понимаю, почему это исчезло после вставки здесь, теперь я отредактировал его в своем посте, и это правильно, но код все равно не работает. –

+0

Не забудьте нажать «Отметить как ответ» ответы, которые решили вашу проблему. Это может быть полезно для других членов сообщества, читающих эту тему. –

-1

Вам не хватает конца строки:

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

После этого незначительного исправления ваш код должен работать.

+0

Были методы, я не понимаю, почему это исчезло после вставки здесь, теперь я отредактировал его в своем посте, и это правильно, но код все равно не работает. –

+0

И если вы попытаетесь отправить обычную строку? это работает? –

Смежные вопросы