ошибка urlopen [errno 111] соединение отклонено

Я делаю упражнение на python с книгой «headfirst python» и делаю приложение для Android, используя python и sl4a, мой код

import android
import json
import time

from urllib import urlencode
from urllib2 import urlopen

hello_msg     = "Welcome to Coach Kelly's Timing App"
list_title    = 'Here is your list of athletes:'
quit_msg      = "Quitting Coach Kelly's App."
web_server    = 'http://127.0.0.1:8080'
get_names_cgi = '/cgi-bin/generate_name.py'

def send_to_server(url, post_data=None):
    if post_data:
        page = urlopen(url, urlencode(post_data))
    else:
        page = urlopen(url)
    return(page.read().decode("utf8"))

app = android.Android()

def status_update(msg, how_long=2):
    app.makeToast(msg)
    time.sleep(how_long)

status_update(hello_msg)

athlete_names = sorted(json.loads(send_to_server(web_server + get_names_cgi)))
app.dialogCreateAlert(list_title)
app.dialogSetSingleChoiceItems(athlete_names)
app.dialogSetPositiveButtonText('Select')
app.dialogSetNegativeButtonText('Quit')
app.dialogShow()
resp = app.dialogGetResponse().result

status_update(quit_msg) 

это мой код, и результат введите здесь описание изображения

в чем проблема??? Не могу понять в чем проблема...


person Ui-Gyun Jeong    schedule 10.11.2013    source источник
comment
Вы запускали веб-сервер (на порту 8080) в системе?   -  person falsetru    schedule 10.11.2013
comment
да, я запустил локальный хост 8080   -  person Ui-Gyun Jeong    schedule 10.11.2013
comment
Вы запускали веб-сервер на Android? Если да, то запускаете ли вы какую-либо программу брандмауэра на Android?   -  person falsetru    schedule 10.11.2013
comment
Если вы используете сервер на своем рабочем столе/сервере (не в Android), вы должны соответствующим образом настроить строку web_server = 'http://127.0.0.1:8080'.   -  person falsetru    schedule 10.11.2013
comment
попробуйте запустить его как 10.0.2.2:8080   -  person Coderji    schedule 10.11.2013
comment
Да!! оно работает!! спасибо Усама Эспил!!! и фальцет тоже!   -  person Ui-Gyun Jeong    schedule 10.11.2013
comment
@OsamaEspil, можешь объяснить причину?   -  person Ui-Gyun Jeong    schedule 10.11.2013
comment
можете ли вы пометить это как правильное, чтобы люди могли ссылаться на него   -  person Coderji    schedule 10.11.2013


Ответы (2)


Используйте 10.0.2.2:8080

потому что если вы используете и сервер, и эмулятор на своем компьютере 127.0.0.1: (порт), локальный IP-адрес будет ссылаться на эмулятор, тогда вам нужен другой локальный IP-адрес для сервера, который будет автоматически 10.0.2.2

надеюсь, я хорошо разобрался, рад, что помог

person Coderji    schedule 10.11.2013

Следуя решению @Coderji, я наконец смог решить эту проблему, хотя и с другим IP-адресом; так как предложенный 10.0.2.2 у меня не работал. Что сработало для меня, так это доступ к терминалу, ipconfig, а затем использование любого из предоставленных адресов ipv4, предоставленных cmd (похоже, все они работали). Ваше здоровье.

person theonealien    schedule 09.03.2020