2017-05-23 1 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 데이터 만 허용하며 일반 텍스트는 한 번 전달하지 않았습니다. 이 문제를 해결하려면, 내가 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) 
관련 문제