2013-12-21 6 views
2

Я создаю приложение, используя kivy. Я установил простой сервер dhcp на мой Android.отправка данных на сервер с использованием kivy

import urllib 
from kivy.network.urlrequest import UrlRequest 

def bug_posted(req, result): 
    print('Our bug is posted !') 
    print(result) 

params = urllib.urlencode({'@number': 12524, '@type': 'issue', 
'@action': 'show'}) 
headers = {'Content-type': 'application/x-www-form-urlencoded', 
     'Accept': 'text/plain'} 
req = UrlRequest('<ip>:<port>', on_success=bug_posted, req_body=params, 
    req_headers=headers) 
print req 

result = "test" 
bug_posted(req, result) 

Но, когда я запустил этот код, он не войдет в систему на моем сервере. как я могу войти на свой сервер?

+0

Я не уверен, зачем вам нужен сервер dhcp на android, этот код работает на Android или на другом компьютере? Кроме того, urlrequest, вероятно, не работает, если вы не запускаете цикл kivy в среднее время. – Tshirtman

+0

моя главная цель: у меня есть тестовый файл с именем test.txt, в котором у меня есть некоторый контент. содержимое test.txt увеличивается каждый момент. Я хочу загрузить этот контент на свой сервер, чтобы я мог видеть с сервера. Я делаю это, потому что я не могу отправить файл на какой-либо идентификатор электронной почты, не задумываясь о том, что пользователи отправили элементы в письмах. – sam

ответ

2

Вы дали разрешение «ИНТЕРНЕТ» на свое приложение? Вы проверили журналы (что служба была запущена?) Вы попробовали что-то еще, что на основе потока urlrequest (что полезно в gui, чтобы избежать блокировки, но меньше в службе)?

(Я все еще ? не понимаю, почему вы упоминаете сервер DHCP, устройство по-прежнему получить доступ к Интернету правильно, справа)

+0

Да, но главная проблема в том, что мне нужен файл журнала, который нужно вернуть ко мне. есть 2 варианта. 1. через почту, но в этом случае почтовый ящик будет заполнен, и пользователь всегда будет знать об этом. 2. отправить содержимое файла на поток на любой сервер. Можете ли вы посоветовать мне, как я могу достичь? – sam

+0

Вы не ответили ни на один из моих вопросов. Я не уверен, как я могу помочь вам без какой-либо полезной информации. kivy - это python, вы можете использовать обычные сетевые библиотеки в сервисе, urlrequest именно там, чтобы избежать блокировки пользовательского интерфейса, если вы используете сеть по размеру приложения, это не нужно в службе. Кроме того, отправка журнала андроида на ваш сервер, если пользователь не знает об этом, кажется немного неприятным, и я думаю, что вам нужны специальные разрешения для чтения этого журнала в последних версиях Android, пожалуйста, сообщите пользователю, что вы это делаете, независимо от того, (и, пожалуйста, ответьте на все мои вопросы!) – Tshirtman

+0

да, я дал разрешения сейчас, но я не понимаю, как я могу получить этот журнал для клиентов android для меня? Я не знаю, как я могу это сделать. вы можете руководствоваться? – sam

1

Попробуйте позвонить:

req.wait() 

ближе к концу кода

import urllib 
from kivy.network.urlrequest import UrlRequest 

def bug_posted(req, result): 
    print('Our bug is posted !') 
    print(result) 

params = urllib.urlencode({'@number': 12524, '@type': 'issue', 
'@action': 'show'}) 
headers = {'Content-type': 'application/x-www-form-urlencoded', 
     'Accept': 'text/plain'} 
req = UrlRequest('<ip>:<port>', on_success=bug_posted, req_body=params, 
    req_headers=headers) 
req.wait() 

без него просьба не срабатывает для меня.

Смежные вопросы