Python kivy Urlrequest带回调在手机上抛出错误,但在笔记本电脑上没有,为什么?
下面是完整的代码 当我在笔记本电脑上运行下面这个简单的kivy代码时,输出是“kivy Success的Hello”。当我使用buildozer android debug deploy从ubuntu运行到我的手机时,输出是“Hello from Kivy Error”。我甚至在我的项目文件夹中添加了cacert.pem,使用了ca_file=where(),verify=True。那也没用 为什么UrlRequest在我的手机上失败?请帮我找个解决办法Python kivy Urlrequest带回调在手机上抛出错误,但在笔记本电脑上没有,为什么?,python,callback,kivy,buildozer,urlrequest,Python,Callback,Kivy,Buildozer,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
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,request,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,request,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, 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。@aerijman您可能会提供帮助吗?您的
buildozer.spec的要求是什么?@JohnAnderson在buildozer规范的应用程序要求中,我添加了certifi和openssl。还有权限=互联网。在我使用UrlRequest
的应用程序中,我的要求包括openssl、python3、kivy、requests、urllib3
。“我不确定你是否需要所有这些,但你可能需要。”约翰南德森还向问题中添加了logcat。使用kivy.network.urlrequest时是否需要urllib3?我加入了你提到的规格,但它不起作用。另外,只要我删除ca_file=certifi.where(),verify=True,应用程序就会显示“Hello from Kivy Error”,但不会在手机上崩溃。这是什么意思?