如何解决带有回调的kivy Urlrequest在移动设备上引发错误,但在笔记本电脑上却没有,为什么?
下面是完整的代码。
当我在笔记本电脑上运行以下简单的kivy代码时,输出为“来自Kivy Success的Hello”。当我使用buildozer android debug deploy运行时,从ubuntu到我的手机运行的输出是“ Hello from Kivy Error”。我什至在我的项目文件夹中添加了cacert.pem,使用了ca_file = where(),verify = True。那也没有帮助。
为什么UrlRequest在我的手机上失败?请帮我解决。
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.network.urlrequest import UrlRequest
from kivy.uix.label import Label
from kivy.uix.button import Button
import json
def where():
f = os.path.dirname(__file__)
return os.path.join(f,'cacert.pem')
class MainScreen(FloatLayout):
def __init__(self,**kwargs):
super(MainScreen,self).__init__(**kwargs)
self.a = None
self.test_connection()
print(" I am in init")
def on_getCloudEvents_success(self,request,result):
print("on_getCloudEvents_success called:")
print(" result="+str(result))
self.resp = result
self.SYNC_REQUEST_STAT="Success" # to end the synchronous wait
self.after_success()
def on_getCloudEvents_failure(self,result):
print("on_getCloudEvents_failure called:")
print(" request was sent to "+str(request.url))
print(" request body="+str(request.req_body))
print(" request headers="+str(request.req_headers))
print(" result="+str(request.result))
self.SYNC_REQUEST_STAT="Failure" # to end the synchronous wait
self.after_success()
def on_getCloudEvents_error(self,result):
print("on_getCloudEvents_error called:")
print(" request was sent to "+str(request.url))
print(" request body="+str(request.req_body))
print(" request headers="+str(request.req_headers))
print(" result="+str(request.result))
self.SYNC_REQUEST_STAT="Error" # to end the synchronous wait
self.after_success()
def after_success(self):
# button = Button(text='Hello world'+self.a)
# self.add_widget(button)
self.a = "heree"
label = Label(text='Hello from Kivy'+self.SYNC_REQUEST_STAT,size_hint=(.5,.5),pos_hint={'center_x': .5,'center_y': .5},color = [1.4,1,1.8])
self.add_widget(label)
return self
def test_connection(self):
jdata = {"symbols": {"tickers": ["BITTREX:BTCUSDT"],"query": {"types": []}},"columns": ["Recommend.Other|15","Recommend.All|15","Recommend.MA|15","RSI|15","RSI[1]|15","Stoch.K|15","Stoch.D|15","Stoch.K[1]|15","Stoch.D[1]|15","CCI20|15","CCI20[1]|15","ADX|15","ADX+DI|15","ADX-DI|15","ADX+DI[1]|15","ADX-DI[1]|15","AO|15","AO[1]|15","Mom|15","Mom[1]|15","MACD.macd|15","MACD.signal|15","Rec.Stoch.RSI|15","Stoch.RSI.K|15","Rec.WR|15","W.R|15","Rec.BBPower|15","BBPower|15","Rec.UO|15","UO|15","close|15","EMA5|15","SMA5|15","EMA10|15","SMA10|15","EMA20|15","SMA20|15","EMA30|15","SMA30|15","EMA50|15","SMA50|15","EMA100|15","SMA100|15","EMA200|15","SMA200|15","Rec.Ichimoku|15","Ichimoku.BLine|15","Rec.VWMA|15","VWMA|15","Rec.HullMA9|15","HullMA9|15","Pivot.M.Classic.S3|15","Pivot.M.Classic.S2|15","Pivot.M.Classic.S1|15","Pivot.M.Classic.Middle|15","Pivot.M.Classic.R1|15","Pivot.M.Classic.R2|15","Pivot.M.Classic.R3|15","Pivot.M.Fibonacci.S3|15","Pivot.M.Fibonacci.S2|15","Pivot.M.Fibonacci.S1|15","Pivot.M.Fibonacci.Middle|15","Pivot.M.Fibonacci.R1|15","Pivot.M.Fibonacci.R2|15","Pivot.M.Fibonacci.R3|15","Pivot.M.Camarilla.S3|15","Pivot.M.Camarilla.S2|15","Pivot.M.Camarilla.S1|15","Pivot.M.Camarilla.Middle|15","Pivot.M.Camarilla.R1|15","Pivot.M.Camarilla.R2|15","Pivot.M.Camarilla.R3|15","Pivot.M.Woodie.S3|15","Pivot.M.Woodie.S2|15","Pivot.M.Woodie.S1|15","Pivot.M.Woodie.Middle|15","Pivot.M.Woodie.R1|15","Pivot.M.Woodie.R2|15","Pivot.M.Woodie.R3|15","Pivot.M.Demark.S1|15","Pivot.M.Demark.Middle|15","Pivot.M.Demark.R1|15"]}
jdata = json.dumps(jdata).encode('utf-8')
print(jdata)
scan_url = 'https://scanner.tradingview.com/crypto/scan'
UrlRequest(scan_url,req_body=jdata,on_success=self.on_getCloudEvents_success,on_failure=self.on_getCloudEvents_failure,on_error=self.on_getCloudEvents_error)
class App(App):
def build(self):
return MainScreen()
if __name__ == "__main__":
App().run()
解决方法
我解决了我的问题。在buildozer规格要求中,我必须添加python3 == 3.7.5,hostpython3 == 3.7.5。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。