【问题标题】:urlopen error [errno 111] connection refusedurlopen 错误 [errno 111] 连接被拒绝
【发布时间】:2013-11-10 08:46:38
【问题描述】:

我正在用一本书“headfirst python”做python练习 并使用 python 和 sl4a 制作 android 应用程序 我的代码是

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) 

这是我的代码,结果是

有什么问题??? 我不知道是什么问题...

【问题讨论】:

  • 你是否在系统中运行了webserver(8080端口)?
  • 是的,我运行了本地主机 8080
  • 你在android上运行webserver吗?如果是这样,您是否在 android 上运行任何防火墙程序?
  • 如果您在桌面/服务器上运行服务器(而不是在 android 中),您应该相应地调整 web_server = 'http://127.0.0.1:8080' 行。
  • @OsamaEspil 你能解释一下原因吗?

标签: android python json sl4a


【解决方案1】:

使用 10.0.2.2:8080

因为如果您在计算机 127.0.0.1:(port) 中同时运行服务器和模拟器,则本地 IP 将引用模拟器,那么您需要另一个本地 IP 用于服务器,该 IP 将自动为 10.0.2.2

希望我把它弄清楚了,很高兴我能帮上忙

【讨论】:

    【解决方案2】:

    遵循@Coderji 的解决方案,我终于能够解决这个问题,尽管使用不同的 IP 地址;因为建议的 10.0.2.2 对我不起作用。 对我有用的是访问终端 ipconfig,然后使用 cmd 提供的任何 ipv4 地址(它们似乎都可以工作)。干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 2016-01-31
      • 2013-12-19
      相关资源
      最近更新 更多