2017-05-23 15 views
1

フラスコsqlalchemyとmarshmallowをフラスコバックエンドで作成し、jsonとkivyをフロントエンドとして返します。 kivy urlrequestを使用してフラスコのAPIにログインしようとしていますが、データが渡されていません。私は有効なデータを渡したとしても、私のフラスコのapi( '入力データなし')からエラーが出ます。Kivy UrlRequestがデータを渡していません

from kivy.network.urlrequest import UrlRequest 
import urllib 
import json 

def success(req, result): 
    print('success') 

def fail(req, result): 
    print('fail') 

def error(req, result): 
    print('error') 

def progress(req, result, chunk): 
    print('loading') 

values = {'email':'[email protected]', 'pwdhash':'wilson'} 
params = urllib.urlencode(values) 
headers = {'Content-type': 'application/x-www-form-urlencoded', 
      'Accept': 'text/plain'} 

req = UrlRequest('http://127.0.0.1:5000/login', on_success=success, on_failure=fail, on_error=error, on_progress=progress, req_body=params, req_headers=headers) 
req.wait() 
print(req.result) 

この問題を解決する方法を教えてください。

答えて

1

私の質問に答える

私のAPIはjsonデータのみを受け入れています。私は決してプレーンテキストを1つも渡しませんでした。この問題を解決するために、私はJSON形式にデータを変換するjson.dumpsと呼ばれるからコンテンツ・タイプを変更し、アプリケーション/ x-www-form-urlencodedでアプリケーション/ JSON以下

には、固定されたコードである:

from kivy.network.urlrequest import UrlRequest 
import urllib 
import json 

def success(req, result): 
    print('success') 

def fail(req, result): 
    print('fail') 

def error(req, result): 
    print('error') 

def progress(req, result, chunk): 
    print('loading') 

values = {'email':'[email protected]', 'pwdhash':'wilson'} 
# converted data to json type 
params = json.dumps(values) 

# changed Content-type from application/x-www-form-urlencoded to application/json 
headers = {'Content-type': 'application/json', 
      'Accept': 'text/plain'} 

req = UrlRequest('http://127.0.0.1:5000/login', on_success=success, on_failure=fail, on_error=error, on_progress=progress, req_body=params, req_headers=headers) 
req.wait() 
print(req.result) 
関連する問題