2017-08-27 126 views
0

嗨!我有一個在kivy和python3上編寫的現成項目。這個程序 適用於所有桌面操作系統(Windows,Linux,MacOS),但 編譯成.apk文件後,UrlRequest不適用於我。我在 剛剛沒有做,在建築師;UrlRequest錯誤(名稱'HTTPSConnection'未定義)kivy

-- requirements = pyopenssl,openssl,docutils,android,python3crystax,kivy 

-- android.permissions = INTERNET, ACCESS_NETWORK_STATE 

在Android安裝.apk文件,並按下按鈕 刮網站的頁面後,PROGRAMM產生一個錯誤

**name 'HTTPSConnection' is not defined** 

這與的URLRequest代碼的一部分:

def get_html(self, link): 
    try: 
     from kivy.network.urlrequest import UrlRequest 
     if isinstance(link, bytes): 
      link = link.decode('utf-8') 
     reg = UrlRequest(link, debug=True, 
         on_success=self.suc, on_error=self.err) 
     while not reg.is_finished: 
      sleep(0.5) 
      Clock.tick() 
    except HTTPError: 
     pass 

def suc(self, reg, result): 
    self.add_widget(Label(
     text=str(result), font_size='15sp', color=(0, 0, 0, 1) 
    )) 

def err(self, reg, error): 
    class Error(App): 
     def build(self): 
      win_report = BugReporter(txt_report=str(error)) 
      return win_report 
    Error().run() 
在可變(鏈接)

插入從一個字典的鏈接。

dict_links = dict({ 
    "userful_programs": "https://pcompstart.com/?view=cat&category=1", 
    "advice_on_computer": "https://pcompstart.com/?view=cat&category=2", 
    "user_windows": "https://pcompstart.com/?view=cat&category=3", 
    "articles_in_theme": "https://pcompstart.com/?view=cat&category=4", 
    "popular_program": "https://pcompstart.com/?view=cat&category=5", 
    "other": "https://pcompstart.com/?view=cat&category=6"}) 
我buildozer.spec與LOG_LEVEL = 2,連接在 此鏈接

完整文件記錄; https://15530009509605697547.googlegroups.com/attach/38c18b633925d/logcat.txt?part=0.1&view=1&vt=ANaJVrFE1tvgVU8m0abaquknNDEzcXf_tgIMDdxEzo1tMSLUhqzNrto84pYWSc4sPxksIpmwEkAWhL_2IO2dptE2TLwFKzKJ535Vct_CDD_BgCz1M2G7u50

謝謝!

或者,如果在同一個文件,我將執行 -

from http.client import HTTPSConnection 

然後在Android編譯後,我得到的錯誤 -

ImportError: cannot import name 'HTTPSConnection' 

還是我將執行 -

import ssl 

然後在Android編譯後,我得到的錯誤 -

ImportError: No module named '_ssl' 

可能的kivy編譯沒有SSL支持。這是錯誤還是我錯了?

回答

0

不知道這是否會有所幫助,我是新手,但最近幾天我經歷了非常相似的考驗。

實質上,我一直在用簡單的HTTPS請求掙扎。我嘗試了所有可能的庫,例如urllib,urllib2,請求和kivy的UrlRequest,但沒有運氣。起初,我試過python3(和你一樣),然後切換到python2,因爲它似乎產生較少的錯誤一般(不知道這是否實際上是真的)。

最後我得到了同樣的錯誤「HTTPSconnection not defined」,嘗試了數百件事情,並最終將「httplib2」置入要求(buildozer.spec)中,並最終完成了相同的操作就像在桌面上一樣。編譯httplib時出現了一些錯誤(我已經閱讀過編碼方面的一些問題),但無論如何編譯和工作。

我buildozer.spec重要的線路有:

requirements = kivy, android, openssl, pyopenssl, httplib2 

pyopenssl是多餘的我猜

android.permissions = INTERNET, ACCESS_NETWORK_STATE 

我main.py進口測試程序:

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.network.urlrequest import UrlRequest 

希望這幫助,祝你好運